id = "xcode" name = "Xcode" homepage = "https://developer.apple.com/xcode/" description = "The tools you need to develop, test, and distribute apps for Apple platforms." icon = "SimpleIcons:xcode" platforms = ["macos"] # The two commands Xcode installs that a user types: `xcodebuild` to build a # project and `xed` to open a file in the IDE. `xcrun` is left out — it belongs # to the Command Line Tools and is present on Macs with no Xcode at all. executables = ["xcodebuild", "xed"] [dotfiles] # Verified on a Mac with Xcode installed. ~/Library/Developer/Xcode/UserData is # where the IDE keeps the per-user editing settings, and two directories in it # are the user's own work: # # KeyBindings/Default.idekeybindings — the key binding set the Key Bindings # preference pane writes, an XML property list # FontAndColorThemes/.xccolortheme — the editor themes the Themes pane # writes, also XML property lists # # ~/Library/Preferences/com.apple.dt.Xcode.plist beside them is Xcode's # NSUserDefaults domain — the rest of the preference window — and it is a # preference domain on this machine's `defaults domains` listing. paths = [ "~/Library/Developer/Xcode/UserData/KeyBindings/", "~/Library/Developer/Xcode/UserData/FontAndColorThemes/", "[preferences]/com.apple.dt.Xcode.plist", ] # The rest of UserData on the same machine is account and device state, not # settings: Capabilities/ and Portal/ are cached responses from the developer # portal keyed by team id, XcodeCloud/ is a Core Data store, Previews/ and # IB Support/ hold simulator device state, and the loose *.xcuserstate files # are window state. None of it is inside a directory named above, so there is # nothing to carve out — it is simply not listed. # ~/Library/Developer/Xcode/UserData/Provisioning Profiles/ holds the signing # profiles Xcode downloads for the signed-in team. They are not listed above # either, and they are not marked secret because a profile is a device list # and a certificate rather than a key — the private half lives in the login # keychain, which is not a file this catalog reaches. secret = [] # No machine_lines. Every file named above is a property list, and this # schema's `format` covers toml, yaml and json only, so a per-key carve-out # could not be written even where one was wanted — and the derived data path # and simulator state that would want one are in the preference domain rather # than in the themes and bindings. [commands] format = 1 label = "Build with xcodebuild" description = "Build or inspect an Xcode project or workspace. Run from the project directory. Build actions (build, test, clean, archive) are typed after the options and are not part of this form; signing and export options are left out." quality = "ai-draft" base = "fig:xcodebuild" parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/xcodebuild.ts" license = "MIT" [[commands.field]] id = "workspace" label = "Workspace" type = "path" option = ["-workspace"] path = { kind = "any", role = "input" } sources = ["fig"] [[commands.field]] id = "project" label = "Project" type = "string" option = ["-project"] sources = ["fig"] [[commands.field]] id = "scheme" label = "Scheme" type = "string" option = ["-scheme"] sources = ["fig"] [[commands.field]] id = "target" label = "Target" type = "string" option = ["-target"] sources = ["fig"] [[commands.field]] id = "configuration" label = "Configuration" type = "string" option = ["-configuration"] suggestions = [{ value = "Debug", label = "Debug" }, { value = "Release", label = "Release" }] sources = ["fig"] [[commands.field]] id = "destination" label = "Destination" description = "Comma-separated key=value pairs, e.g. platform=iOS Simulator,name=iPhone 16." type = "string" option = ["-destination"] sources = ["fig"] [[commands.field]] id = "sdk" label = "SDK" type = "string" option = ["-sdk"] sources = ["fig"] [[commands.field]] id = "arch" label = "Architecture" type = "string" option = ["-arch"] suggestions = [{ value = "arm64", label = "arm64" }, { value = "x86_64", label = "x86_64" }] sources = ["fig"] [[commands.field]] id = "derived_data" label = "Derived data path" type = "path" option = ["-derivedDataPath"] path = { kind = "directory", role = "output" } sources = ["fig"] [[commands.field]] id = "result_bundle" label = "Result bundle path" type = "path" option = ["-resultBundlePath"] path = { kind = "directory", role = "output" } sources = ["fig"] [[commands.field]] id = "jobs" label = "Concurrent jobs" type = "integer" option = ["-jobs"] sources = ["fig"] [[commands.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["-quiet"] sources = ["fig"] [[commands.field]] id = "list" label = "List targets and schemes" type = "boolean" option = ["-list"] sources = ["fig"] [[commands.field]] id = "show_build_settings" label = "Show build settings" type = "boolean" option = ["-showBuildSettings"] sources = ["fig"] [[commands.field]] id = "showsdks" label = "Show installed SDKs" type = "boolean" option = ["-showsdks"] sources = ["fig"] [[commands.task]] id = "list" label = "List schemes" fields = ["workspace", "project", "list"] set = { list = [true] } [[commands.task]] id = "settings" label = "Show build settings" fields = ["workspace", "project", "scheme", "configuration", "show_build_settings"] required = ["scheme"] set = { show_build_settings = [true] } [[commands.task]] id = "build" label = "Choose what to build" fields = ["workspace", "project", "scheme", "configuration", "destination", "derived_data"] required = ["scheme"] [[commands.group]] id = "basic" label = "Basic" fields = ["workspace", "project", "scheme", "configuration", "destination", "list"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["target", "sdk", "arch", "result_bundle", "jobs", "quiet", "showsdks", "show_build_settings", "derived_data"]