xc-mcp
Version:
MCP server that wraps Xcode command-line tools for iOS/macOS development workflows
80 lines • 2.81 kB
TypeScript
/**
* Build Settings Cache
*
* Caches Xcode build settings to avoid repeated expensive xcodebuild calls.
* Settings include bundle identifier, deployment target, device families, and capabilities.
*
* Cache TTL: 1 hour (can be invalidated on project file changes)
*/
export interface BuildSettings {
PRODUCT_BUNDLE_IDENTIFIER: string;
DEPLOYMENT_TARGET: string;
TARGETED_DEVICE_FAMILY: string;
INFOPLIST_FILE: string;
CONFIGURATION_BUILD_DIR: string;
PRODUCT_NAME: string;
PRODUCT_MODULE_NAME: string;
NSCameraUsageDescription?: string;
NSLocationWhenInUseUsageDescription?: string;
NSLocationAlwaysAndWhenInUseUsageDescription?: string;
NSMicrophoneUsageDescription?: string;
NSContactsUsageDescription?: string;
NSCalendarsUsageDescription?: string;
NSRemindersUsageDescription?: string;
NSPhotosUsageDescription?: string;
NSHealthShareUsageDescription?: string;
NSHealthUpdateUsageDescription?: string;
NSBluetoothAlwaysUsageDescription?: string;
NSUserTrackingUsageDescription?: string;
NSSiriUsageDescription?: string;
}
export declare class BuildSettingsCache {
private cache;
private CACHE_TTL_MS;
/**
* Get all build settings for a given project, scheme, and configuration
*/
getBuildSettings(projectPath: string, scheme: string, configuration?: string): Promise<BuildSettings>;
/**
* Get bundle identifier for quick lookup
*/
getBundleIdentifier(projectPath: string, scheme: string): Promise<string>;
/**
* Get app path for installation/launching
*/
getAppPath(projectPath: string, scheme: string, configuration?: string): Promise<string>;
/**
* Get deployment target version as iOS major version (e.g., 15, 16, 17)
*/
getDeploymentTarget(projectPath: string, scheme: string): Promise<number>;
/**
* Get supported device families
* Returns: { supportsIPhone: boolean; supportsIPad: boolean }
*/
getDeviceFamilies(projectPath: string, scheme: string): Promise<{
supportsIPhone: boolean;
supportsIPad: boolean;
}>;
/**
* Get required capabilities from Info.plist keys
*/
getRequiredCapabilities(projectPath: string, scheme: string): Promise<string[]>;
/**
* Invalidate cache for specific project (after project changes)
*/
invalidateCache(projectPath?: string, scheme?: string): void;
/**
* Get cache statistics
*/
getCacheStats(): {
size: number;
oldestEntry: number | null;
newestEntry: number | null;
};
/**
* Fetch build settings from xcodebuild
*/
private fetchBuildSettings;
}
export declare const buildSettingsCache: BuildSettingsCache;
//# sourceMappingURL=build-settings-cache.d.ts.map