The best command-line tool to install and switch between multiple versions of Xcode.

Overview

xcodes

The best command-line tool to install and switch between multiple versions of Xcode.

If you're looking for an app version of xcodes, try Xcodes.app.

CI Status

Installation

Homebrew (Preferred)

brew install robotsandpencils/made/xcodes

These are Developer ID-signed and notarized release builds and don't require Xcode to already be installed in order to use.

Other methods:

Download a release

Download the latest release from the Releases page. These are Developer ID-signed release builds and don't require Xcode to already be installed in order to use.

Using Mint
mint install RobotsAndPencils/xcodes
Build from source

Building from source requires Xcode 12.0 or later, so it's not an option for setting up a computer from scratch.

git clone https://github.com/RobotsAndPencils/xcodes
cd xcodes
make install
# or, if /usr/local/ isn't in your PATH
PREFIX=/your/install/directory make install

While installing, you may get the following output:

swift build
error: terminated(72): xcrun --sdk macosx --find xctest output:

If that occurs, it means you need to select a version of Xcode. You can do this with xcode-select or by choosing a Command Line Tools option in Xcode's preferences Locations tab.

Usage

Install a specific version of Xcode using a command like one of these:

xcodes install 10.2.1
xcodes install 11 Beta 7
xcodes install 11.2 GM seed
xcodes install 9.0 --path ~/Archive/Xcode_9.xip
xcodes install --latest-prerelease
xcodes install --latest --directory "/Volumes/Bag Of Holding/"

You'll then be prompted to enter your Apple ID username and password. You can also provide these with the XCODES_USERNAME and XCODES_PASSWORD environment variables.

After successfully authenticating, xcodes will save your Apple ID password into the keychain and will remember your Apple ID for future use. If you need to use a different Apple ID than the one that's remembered, set the XCODES_USERNAME environment variable.

xcodes will download and install the version you asked for so that it's ready to use.

(1/6) Downloading Xcode 11.2.0: 100%
(2/6) Unarchiving Xcode (This can take a while)
(3/6) Moving Xcode to /Applications/Xcode-11.2.0.app
(4/6) Moving Xcode archive Xcode-11.2.0.xip to the Trash
(5/6) Checking security assessment and code signing
(6/6) Finishing installation
xcodes requires superuser privileges in order to finish installation.
macOS User Password:

Xcode 11.2.0 has been installed to /Applications/Xcode-11.2.0.app

If you have aria2 installed (it's available in Homebrew, brew install aria2), then xcodes will default to use it for downloads. It uses up to 16 connections to download Xcode 3-5x faster than URLSession.

Xcode will be installed to /Applications by default, but you can provide the path to a different directory with the --directory option or the XCODES_DIRECTORY environment variable. All of the xcodes commands support this option, like select and uninstall, so you can manage Xcode versions that aren't in /Applications. xcodes supports having all of your Xcode versions installed in one directory, wherever that may be.

Commands

  • download : Download a specific version of Xcode
  • install : Download and install a specific version of Xcode
  • installed: List the versions of Xcode that are installed
  • list: List all versions of Xcode that are available to install
  • select: Change the selected Xcode
  • uninstall: Uninstall a specific version of Xcode
  • update: Update the list of available versions of Xcode
  • version: Print the version number of xcodes itself
  • signout: Clears the stored username and password

Shell Completion Scripts

xcodes can generate completion scripts which allow you to press the tab key on your keyboard to autocomplete commands and arguments when typing an xcodes command. The steps to install a completion script depend on the shell that you use. More information about installation instructions for different shells and the underlying implementation is available in the swift-argument-parser repo.

Zsh, with oh-my-zsh:

Run the following commands:

mkdir ~/.oh-my-zsh/completions
xcodes --generate-completion-script > ~/.oh-my-zsh/completions/_xcodes

Development

You'll need Xcode 12 in order to build and run xcodes.

Using Xcode Even though xcodes is a command-line app, lll of the normal functionality works in Xcode, like building, running, and running tests. You can even type text into Xcode's console when it prompts you for input like your Apple ID or 2FA code.

When running xcodes from Xcode, if you want to run a particular command or pass some arguments, you can hold the option key to present a sheet with more options. This means you'd use Option + Command + R or hold Option while clicking the Run button. Here you can add, remove, and toggle arguments that will be passed to xcodes when it's launched.

Using Swift command line tools You can also use the Swift command line tools once you have Xcode installed:
  • Build: swift build
  • Run: swift run, or commands like swift run xcodes list
  • Run tests: swift test

There's a Makefile to help build xcodes for distribution. We already do this for you in order to provide Developer ID-signed and notarized release builds via Homebrew (see Installation).

Releasing a new version of xcodes
# Bump the version number in Version.swift, commit the change, and tag it
vim Sources/XcodesKit/Version.swift
git add Sources/XcodesKit/Version.swift
git commit -m "Bump version to $VERSION"
git tag -asm "$VERSION" "$VERSION"

# Clean first
make clean

# Make a release build of xcodes, sign it, and zip it
make zip
# Create a Homebrew bottle
make bottle VERSION="$VERSION"

# Notarize the release build
# This can take a while
make notarize \
    USERNAME="[email protected]" \
    PASSWORD="@keychain:ALTool Notarization" \
    ASC_PROVIDER="YourAppStoreConnectTeamName"

# Push the new version bump commit and tag
git push --follow-tags

# Edit the draft release created by Release Drafter to point at the new tag
# Set the release title to the new version
# Add the xcodes.zip and xcodes-$VERSION.mojave.tar.gz files to the release
# Publish the release

# Update the Homebrew Bottle: https://github.com/RobotsAndPencils/homebrew-made/blob/master/Formula/xcodes.rb

Notable design decisions are recorded in DECISIONS.md. The Apple authentication flow is described in Apple.paw, which will allow you to play with the API endpoints that are involved using the Paw app.

xcode-install and fastlane/spaceship both deserve credit for figuring out the hard parts of what makes this possible.

Contact

Made with ❤️ by Robots & Pencils

Twitter | GitHub

Comments
  • Error installing via Homebrew on M1

    Error installing via Homebrew on M1

    Hello!

    I was trying to install on an M1 Mac mini via Homebrew, but I'm running into the following error:

    make
    install
    prefix=/opt/homebrew/Cellar/xcodes/0.17.0
    
    error: terminated(72): HOMEBREW_ANALYTICS_USER_UUID=5F2AFA1B-A39F-4154-9C0B-916EAE829EF4 MAKEOVERRIDES=${-*-command-variables-*-} HOMEBREW_GIT_CONFIG_FILE=/opt/homebrew/Homebrew/.git/config TERM=xterm-256color HOMEBREW_LIBRARY=/opt/homebrew/Homebrew/Library HOMEBREW_BREW_DEFAULT_GIT_REMOTE=https://github.com/Homebrew/brew CARGO_HOME=/Users/Administrator/Library/Caches/Homebrew/cargo_cache ACLOCAL_PATH=/opt/homebrew/share/aclocal TMPDIR=/private/tmp CC=clang GOCACHE=/Users/Administrator/Library/Caches/Homebrew/go_cache TMP=/private/tmp HOMEBREW_CELLAR=/opt/homebrew/Cellar MFLAGS=- --jobserver-fds=3,4 -j HOMEBREW_DEPENDENCIES= MAKELEVEL=1 HOMEBREW_USER_AGENT_CURL=Homebrew/3.1.5 (Macintosh; arm64 Mac OS X 11.2.3) curl/7.64.1 HOMEBREW_CACHE=/Users/Administrator/Library/Caches/Homebrew HOMEBREW_ARCHFLAGS= HOMEBREW_CC_LOG_PATH=/Users/Administrator/Library/Logs/Homebrew/xcodes/01.make HOME=/private/tmp/xcodes-20210503-31493-19bsi4e/.brew_home HOMEBREW_NO_BOOTSNAP=1 HOMEBREW_REQUIRED_RUBY_VERSION=2.6.3 OBJC=clang HOMEBREW_PROCESSOR=arm64 HOMEBREW_BOTTLE_DEFAULT_DOMAIN=https://ghcr.io/v2/homebrew/core HOMEBREW_SYSTEM=Macintosh CXX=clang++ HOMEBREW_OPTFLAGS= SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk MAKEFLAGS= --jobserver-fds=3,4 -j -- prefix=/opt/homebrew/Cellar/xcodes/0.17.0 HOMEBREW_COMMAND_DEPTH=2 HOMEBREW_BREW_GIT_REMOTE=https://github.com/Homebrew/brew HOMEBREW_LIBRARY_PATHS=/opt/homebrew/lib:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries HOMEBREW_MACOS_VERSION=11.2.3 HOMEBREW_REPOSITORY=/opt/homebrew/Homebrew HOMEBREW_OS_VERSION=macOS 11.2 HOMEBREW_RUBY_WARNINGS=-W1 prefix=/opt/homebrew/Cellar/xcodes/0.17.0 __CF_USER_TEXT_ENCODING=0x1F6:0x0:0x52 HOMEBREW_FORMULA_PREFIX=/opt/homebrew/Cellar/xcodes/0.17.0 HOMEBREW_AUTO_UPDATE_CHECKED=1 HOMEBREW_CORE_DEFAULT_GIT_REMOTE=https://github.com/Homebrew/homebrew-core HOMEBREW_CORE_GIT_REMOTE=https://github.com/Homebrew/homebrew-core HOMEBREW_DEFAULT_LOGS=/Users/Administrator/Library/Logs/Homebrew HOMEBREW_MACOS_SYSTEM_RUBY_NEW_ENOUGH=1 HOMEBREW_LOGS=/Users/Administrator/Library/Logs/Homebrew HOMEBREW_ERROR_PIPE=/private/tmp/homebrew20210503-30518-1jfis6f/socket HOMEBREW_PRODUCT=Homebrew HOMEBREW_PREFER_CLT_PROXIES=1 HOMEBREW_ANALYTICS_ID=UA-76679469-1 HOMEBREW_CURL=curl CMAKE_INCLUDE_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers HOMEBREW_ISYSTEM_PATHS=/opt/homebrew/include:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers HOMEBREW_SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk LOGNAME=Administrator HOMEBREW_PREFIX=/opt/homebrew HOMEBREW_CC=clang PWD=/private/tmp/xcodes-20210503-31493-19bsi4e TEMP=/private/tmp HOMEBREW_MINIMUM_GIT_VERSION=2.14.3 CMAKE_PREFIX_PATH=/opt/homebrew HOMEBREW_GIT=git SOURCE_DATE_EPOCH=1614371456 HOMEBREW_CXX=clang++ HOMEBREW_ENV=super SHLVL=1 OBJCXX=clang++ USER=Administrator HOMEBREW_MACOS_VERSION_NUMERIC=110203 HOMEBREW_RUBY_PATH=/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby CURL_HOME=/Users/Administrator SHELL=/bin/zsh HOMEBREW_OPTIMIZATION_LEVEL=Os HOMEBREW_USER_AGENT=Homebrew/3.1.5 (Macintosh; arm64 Mac OS X 11.2.3) PATH=/opt/homebrew/Homebrew/Library/Homebrew/shims/mac/super:/usr/bin:/bin:/usr/sbin:/sbin GOPATH=/Users/Administrator/Library/Caches/Homebrew/go_mod_cache HOMEBREW_DEVELOPER_DIR=/Library/Developer/CommandLineTools LC_ALL=en_US.UTF-8 PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig:/opt/homebrew/Homebrew/Library/Homebrew/os/mac/pkgconfig/11 HOMEBREW_VERSION=3.1.5 _=/usr/bin/swift HOMEBREW_DEFAULT_CACHE=/Users/Administrator/Library/Caches/Homebrew HOMEBREW_BREW_FILE=/opt/homebrew/bin/brew HOMEBREW_DEFAULT_TEMP=/private/tmp HOMEBREW_OPT=/opt/homebrew/opt _JAVA_OPTIONS=-Duser.home=/Users/Administrator/Library/Caches/Homebrew/java_cache HOMEBREW_TEMP=/private/tmp CMAKE_LIBRARY_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries HOMEBREW_CCCFG=Oa /usr/bin/xcrun --sdk macosx --find xctest output:
        xcrun: error: unable to find utility "xctest", not a developer tool or in PATH
    
    make: *** [xcodes] Error 1
    

    It's a pretty close to fresh install of macOS, so Xcode is not already installed (which seems to be the root cause of the unable to find utility "xctest" error based on some cursory googling).

    Let me know if there's any other info I can provide!

    opened by Saelyria 21
  • Simply not working

    Simply not working

    When I try to download any version:

    • it downloads about 100KBs of it
    • considers it 100%
    • then fails with the error: The archive "Xcode-14.0.0+14A309.xip" is damaged and can't be expanded.

    I have tried both with the CLI and the Xcodes app. (Both of them were installed through Homebrew)

    When I run it from the CLI, I see the following output:

    xcodes install --latest --experimental-unxip
    Updating...
    Latest non-prerelease version available is 14.1
    
    Downloading with aria2
    
    (2/6) Unarchiving Xcode (This can take a while)
    Using experimental unxip. If you encounter any issues, remove the flag and try again
    zsh: trace trap  xcodes install --latest --experimental-unxip
    

    I presume the last line is the issue?

    EDIT:

    • I have tried with and without aria2
    • I have tried with and without --experimental-unxip
    • I have tried multiple Xcode versions
    opened by lordzsolt 15
  • Login with SMS 2FA code fails with

    Login with SMS 2FA code fails with "The data couldn’t be read because it is missing"

    Can't get the list of Xcodes from Apple when login with 2FA account.

    $ xcodes list
    Apple ID: [email protected]
    Apple ID Password:
    Enter the code:
    000000
    The data couldn’t be read because it is missing.
    

    Second try is the same:

    $ xcodes list
    Enter the code:
    000001
    The data couldn’t be read because it is missing.
    
    bug 
    opened by bonkey 15
  • Ability to install a specified simulator version

    Ability to install a specified simulator version

    I'm mainly using xcodes as a replacement for Ruby-based xcversion. Unfortunately, xcodes lacks a great feature when compared to xcversion, that is simulator version management. It would be great if xcodes was able to provide a list of available simulators and install a specificied version.

    enhancement 
    opened by MaxDesiatov 14
  • Add a command for listing available simulators

    Add a command for listing available simulators

    This PR adds a new command xcodes runtimes, which is intended to be a replacement for xcversion simulators from xcode-install. I chose the word "runtimes" to avoid confusion with the actual simulators (ie. iPhone Xs), which is also how apple refer to it in xcrun simctl runtime.

    xcversion simulators used a list specific to each installed Xcode, this is now deprecated and now Apple returns all possible runtimes, which makes filtering our responsibilty.

    enhancement 
    opened by StevenSorial 13
  • Support using non-2FA accounts

    Support using non-2FA accounts

    A recent change in Apple's 2FA a few days ago breaks xcodes' authentication.

    $ xcodes update
    You must sign in to https://appstoreconnect.apple.com and acknowledge the Apple ID & Privacy agreement.
    

    fastlane works around it by allowing to opt-in to skipping 2FA upgrade by setting SPACESHIP_SKIP_2FA_UPGRADE=1: https://github.com/fastlane/fastlane/pull/18116.

    enhancement 
    opened by thii 13
  • Support runtime downloading/installing

    Support runtime downloading/installing

    This PR builds on #223, and adds a command for installing runtimes xcodes runtimes install 'iOS 14.5'

    ~~Downloading will require an Apple account for new platforms released in 2022, it's not needed for older platforms.~~

    Installing is still a WIP

    enhancement 
    opened by StevenSorial 12
  • Cannot find version 13.0

    Cannot find version 13.0

    I want to install the latest version about the Xcode , I also installed Xcodes completely, and then run the command line as below: xcodes install 13.0

    and then it showed cannot find the version of 13

    opened by MarcSteven 8
  • download command to download without installing/expanding

    download command to download without installing/expanding

    Closes #112

    Sometimes it's useful to just download Xcode xip without expanding it. The implemented solution shows progress as: xcodes download 12.0 (1/1) Downloading Xcode 12.0.0: 5 % where 1/6 step indicator is replaced by 1/1 depending on the used command (install vs. download)

    When the download is finished, the following message appears: Xcode 12.0.0 has been downloaded to /Users/<#redacted#>/Library/Application Support/com.robotsandpencils.xcodes/Xcode-12.0.0.xip

    Flags and arguments are exactly as in "install" command, as such the actual code that creates "install" command is reused for both "download" and "install", and depending on the "shouldInstall" flag, one of two is created with appropriate --help configuration and other strings.

    opened by art-divin 8
  • use simpler 'release' instead of 'non-prerelease' word in user-facing…

    use simpler 'release' instead of 'non-prerelease' word in user-facing…

    … output

    Hi,

    Not sure if you'll find this PR useful and corresponding to your philosophy, but anyway...

    I find current phrasing Latest non-prerelease version available is... a bit too complex. I would suggest to simplify it by replacing non-prerelease to plain... release.

    I see that the same NonPrerelease term is used in variable names. If you find this suggestion feasible, then I can rename variables too.

    Maybe you'll tell me that there's some deep idea behind non-prerelease, then I'm fine with that too :)

    Thanks for the great tool that saves ton of my time!

    enhancement 
    opened by pastey 6
  • proposal/question: improving diagnostics/handling of a cached invalid username

    proposal/question: improving diagnostics/handling of a cached invalid username

    hi! first, thanks for this tool – it's much more pleasant to use than navigating through the dev portal to find the latest Xcode update. after having used xcodes several times in the past, i recently encountered an issue that was a bit difficult to diagnose. the setup:

    1. i had previously installed Xcode via xcodes with Apple ID $email_1
    2. i changed my Apple ID to $email_2
    3. i attempted to install a new version of Xcode via xcodes

    on step 3, i repeatedly received authentication errors, re-prompting me for my password (which was unchanged), but was not provided any way to re-enter my username (which was now incorrect). after a bit of digging through this repo, i discovered that the 'default' username gets cached in a configuration file for use in subsequent invocations. once i realized this, it was easy enough to fix, but it did take me a while to figure out what was going on.

    so, i was wondering if we could add either some improved feedback, perhaps indicating how to override the cached value (it seemed like env variable, or editing the config file would both work), or introduce behavior that will re-prompt for the username in addition to the password based on some criteria.

    admittedly, this is likely a very narrow edge-case, since i don't think Apple IDs change that often. still, i'd be willing to try and implement an improvement for this particular snag i hit, time permitting. so, my question is what approach should i pursue to improve this?

    opened by jamieQ 6
  • app not in path

    app not in path

    Installed formula view homebrew but it's not in the $PATH like the others. I have to manually call /usr/local/Cellar/xcodes/1.2.0/bin/xcodes This might be an issue with the homebrew install script

    opened by cedricloneux 0
  • [feature] `download` subcommand for `runtimes`

    [feature] `download` subcommand for `runtimes`

    It would really useful if it were possible to download runtimes without actually installing them. Like we can with Xcode versions.

    i.e. xcodes runtimes install "iOS 15.5"

    I would imagine this command to mount the DMG and extract the PKG to ~/Downloads.

    opened by marc-48k 0
  • Prevent keyNotFound error with unknown simulators

    Prevent keyNotFound error with unknown simulators

    This pull request prevents the following error when running xcodes runtimes when an "Unknown Platform Simulator" is installed:

    Error: keyNotFound(CodingKeys(stringValue: "build", intValue: nil), Swift.DecodingError.Context(codingPath: [_JSONKey(stringValue: "820783CB-C389-4006-B2D2-D063F3FD10A1", intValue: nil)], debugDescription: "No value associated with key CodingKeys(stringValue: \"build\", intValue: nil) (\"build\").", underlyingError: nil))
    

    If one accidentally runs xcrun simctl runtime add with an incompatible pre-iOS 16 Simulator runtime:

    xcrun simctl runtime add com.apple.pkg.iPhoneSimulatorSDK15_0-15.0.1.1633542405.dmg
    

    The following error will be displayed:

    D: 94DEF0B1-1585-4D71-AB37-98AB08FDD000 <unknown platform> (Unusable - Missing Signature: Error Domain=SimDiskImageErrorDomain Code=3 "Missing Signature" UserInfo={NSLocalizedDescription=Missing Signature, unusableErrorDetail=})
    

    The problem is that it's not immediately obvious that Xcode has still installed the runtime, but with a missing signature state: PixelSnap 2023-01-04 at 07 50 16@2x

    And when xcodes runs xcrun simctl runtime list -j, there is no build key resulting in the error:

    "820783CB-C389-4006-B2D2-D063F3FD10A1" : {
      "deletable" : true,
      "identifier" : "820783CB-C389-4006-B2D2-D063F3FD10A1",
      "kind" : "Disk Image",
      "path" : "\/Library\/Developer\/CoreSimulator\/Images\/Inbox\/820783CB-C389-4006-B2D2-D063F3FD10A1.dmg",
      "signatureState" : "Missing",
      "sizeBytes" : 5304795932,
      "state" : "Unusable",
      "unusableErrorDetail" : "Error Domain=SimDiskImageErrorDomain Code=3 \"Missing Signature\" UserInfo={NSLocalizedDescription=Missing Signature, unusableErrorDetail=}",
      "unusableErrorMessage" : "Missing Signature",
      "unusableSubstate" : "Missing Signature"
    }
    

    This change results in the following xcodes runtimes output:

    -- Unknown --
    Unknown 0 (Downloaded)
    

    Another approach could be to filter out undecodable runtimes in the RuntimeList class, this actually resulted in more code though.

    opened by dnicolson 0
  • Support for AppleID with Business Manager (Federated Authentication)

    Support for AppleID with Business Manager (Federated Authentication)

    My AppleID is under Federated Authentication in my company's Business Manager. This means that I cannot login with a standard password and will have to authenticate via Azure AD (OAuth like solution).

    Is there any way that I can authenticate, when downloading new versions of Xcode?

    I tried to type-in my AppleID and just pressed the "Return" key on the password prompt and got this error:

    unexpectedSignInResponse(statusCode: 403, message: Optional("-22320: Federated Authentication is required."))
    
    opened by ThomasCle 0
  • Permission denied as a standard user

    Permission denied as a standard user

    When using xcodes under a standard user (non-admin), the installation into /Applications will fail.

    Downloading with aria2 (/Users/ci/homebrew/bin/aria2c)
    (1/6) Downloading Xcode 14.2.0+14C18: 99 %
    (2/6) Unarchiving Xcode (This can take a while)
    Using regular unxip. Try passing `--experimental-unxip` for a faster unxip process
    (3/6) Moving Xcode to /Applications/Xcode-14.2.0.app
    “Xcode” couldn’t be moved because you don’t have permission to access “Applications”.
    

    I suggest to ask for the credentials of an admin account and to execute the moving operation under this user.

    opened by chkpnt 0
  • Option to claim disk space in Application Support taken by old betas

    Option to claim disk space in Application Support taken by old betas

    I have in /Users/******/Library/Application Support/com.robotsandpencils.xcodes:

    • Xcode-13.0.0-Beta.4+13A5201i.xip dated 29 JUL 2021, size 10.39GB
    • Xcode-beta.app dated 24 JUL 2021, size 16.1GB
    xcodes installed
    14.2 (14C18) (Selected) /Applications/Xcode.app
    

    I'd like to have option to wipe such files.

    opened by valeriyvan 0
Releases(1.2.0)
  • 1.2.0(Nov 18, 2022)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    This returns the requirement of having to log in via your Apple username/password. :(

    In happier news - thanks to @StevenMagdy you can now download ~~simulators~~ runtimes via xcodes runtimes install with the speed of aria2! 🚀

    🚀 Enhancements

    • Support runtime downloading/installing (#230) @StevenMagdy
    • Update select command to use .xcode-version (#238) @daltonclaybrook

    🐛 Bug Fixes

    • restore downloading via xcodereleases with apple username/password :( (#245) @MattKiazyk

    🧰 Maintenance

    • Add contributing guide (#237) @MattKiazyk
    Source code(tar.gz)
    Source code(zip)
    xcodes-1.2.0.arm64_mojave.bottle.tar.gz(3.50 MB)
    xcodes-1.2.0.mojave.bottle.tar.gz(3.50 MB)
    xcodes.zip(3.50 MB)
  • 1.1.0(Oct 30, 2022)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    🚀 Enhancements

    • Add select option to install (#182) @tahirmt
    • Update the cached list of available Xcodes if it's more than 24 hours old (#226) @rpendleton
    • Add a command for listing available simulators (#223) @StevenMagdy
    • Add "version" argument to "installed" function, printing Xcode's installation path (#220) @rogerluan

    🐛 Bug Fixes

    • Exit immediately if trying to select currently selected xcode (#181) @tahirmt

    🧰 Maintenance

    • Use mocks when writing the cache file in unit tests (#227) @rpendleton
    • Add documentation for the .xcode-version file (#218) @rogerluan
    • Lint Markdown Files (#217) @rogerluan
    Source code(tar.gz)
    Source code(zip)
    xcodes-1.1.0.arm64_mojave.bottle.tar.gz(3.40 MB)
    xcodes-1.1.0.mojave.bottle.tar.gz(3.40 MB)
    xcodes.zip(3.40 MB)
  • 1.0.0(Sep 19, 2022)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Xcodes now DOES NOT require any Apple ID and password when downloading Xcode! 🎉

    At long last! you no longer are required to provide your Apple username and password in order to download Xcode (as long as your using XcodeReleases datasource).

    • No more 2FA prompts!
    • No more errors when you haven't signed the latest developer EULA!
    • No more nervous feeling giving your password to a 3rd Party.

    Changes

    🚀 Enhancements

    • Add ability to download Xcode without logging in using XcodeRelease (#215) @MattKiazyk
    • Added support to immediately delete Xcode and its XIPs (#211) @juanjonol
    • Added no-superuser flag (#207) @juanjonol

    🧰 Maintenance

    • Update Makefile - refactor swift-build option (#214) @ahmetgeymen
    • update unxip to the latest version (#209) @rpendleton
    • Fix broken unit tests due to new logs and Xcode version (#189) @tahirmt
    Source code(tar.gz)
    Source code(zip)
    xcodes-1.0.0.arm64_mojave.bottle.tar.gz(3.09 MB)
    xcodes-1.0.0.mojave.bottle.tar.gz(3.09 MB)
    xcodes.zip(3.10 MB)
  • 0.20.0(Mar 9, 2022)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    🧪 Unxip Experiment

    Thanks to the wonderful work of https://github.com/saagarjha/unxip - unxipping speed is increased by up to 70% on some newer Macs.

    Use xcodes install --latest --experimental-unxip to test it out

    🚀 Enhancements

    • Add experimental unxip flag (#187) @jpsim
    • Setting universal build (#172) @fishcharlie

    🐛 Bug Fixes

    • Do not exit(1) if xcode is already installed (#180) @tahirmt

    🧰 Maintenance

    • Bump actions/checkout from 2.4.0 to 3 (#186) @dependabot
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.20.0.mojave.bottle.tar.gz(3.08 MB)
    xcodes.zip(3.08 MB)
  • 0.19.0(Dec 14, 2021)

  • 0.18.0(Dec 14, 2021)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    🚀 Enhancements

    • Add signout command (#140) @senmu

    🐛 Bug Fixes

    • Fixing issue with downloading Release Candidate builds (#168) @fishcharlie
    • Forward legible errors (#143) @ffittschen

    🧰 Maintenance

    • Fix broken link to swift-argument-parser (#166) @florentmorin
    • Bump actions/checkout from 2.3.5 to 2.4.0 (#159) @dependabot
    • Bump actions/checkout from 2.3.4 to 2.3.5 (#157) @dependabot
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.18.0.mojave.bottle.tar.gz(1.84 MB)
    xcodes.zip(1.84 MB)
  • 0.17.0(Feb 26, 2021)

  • 0.16.0(Feb 2, 2021)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes. If you also have Xcodes.app installed via Homebrew Cask then you may need to run brew link xcodes afterwards.

    Changes

    🚀 Enhancements

    • Add support for and default to Xcode Releases data instead of scraping developer.apple.com (#129) @interstateone
      • You can still use the scraped data by providing the --data-source apple option
      • Previously only prerelease versions displayed build identifiers, and now all versions do. This may be a breaking change if you relied on the previous behaviour.
    • The uninstall command can be used interactively by omitting the version argument (#131) @pakko972
    • The installed command now prints the absolute path for each version (#133) @NinjaLikesCheez
      • This output is aligned into columns for interactive terminals (#134, 784751d662502704f76d1e72dd235e0db7a1393a) @interstateone
    • Replaced Guaka with swift-argument-parser (#94) @interstateone
      • Output generated by swift-argument-parser, like help output, may be formatted differently than Guaka did, and so this may be a breaking change if you relied on the previous format.

    🧰 Maintenance

    • Update release-drafter.yml to include Homebrew upgrade instructions (#127) @interstateone
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.16.0.mojave.bottle.tar.gz(2.01 MB)
    xcodes.zip(2.01 MB)
  • 0.15.0(Jan 3, 2021)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    • Add download command to download without installing (#121) @art-divin
    • Add --directory argument and XCODES_DIRECTORY environment variable to all commands (#126) @interstateone
    • Search PATH for aria2c, instead of only looking in /usr/local/bin (#119) @interstateone
    • Renamed the install command's --url flag to --path (#120) @art-divin
    • Fixed an infinite loop that would occur if the XCODES_PASSWORD environment variable was incorrect (#125) @ccarpita
    • Build with Xcode 12.2 and revert to swift test command (#122) @interstateone
    • Build with Xcode 12.3 (dc8853120b3a3d8a6bc61bf86fa12e2f74004d11) @csykes
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.15.0.mojave.bottle.tar.gz(1.54 MB)
    xcodes.zip(1.54 MB)
  • 0.14.0(Nov 17, 2020)

  • 0.13.0(Oct 21, 2020)

  • 0.12.0(Oct 14, 2020)

  • 0.11.0(Aug 29, 2020)

  • 0.10.0(May 9, 2020)

  • 0.9.0(Dec 20, 2019)

  • 0.8.1(Nov 13, 2019)

  • 0.8.0(Oct 10, 2019)

  • 0.7.2(Sep 24, 2019)

  • 0.7.1(Sep 17, 2019)

  • 0.7.0(Aug 30, 2019)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    • Check for existing Xcode archive before downloading (#66) @interstateone
    • Add uninstall command (#64) @interstateone
    • Ensure requested version isn't already installed before downloading (#63) @interstateone
    • Sign with hardened runtime and timestamp (#62) @interstateone
    • Move XIPs to Trash instead of immediately deleting them (#60) @interstateone
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.7.0.mojave.bottle.tar.gz(1.05 MB)
    xcodes.zip(1.05 MB)
  • 0.6.0(Jul 2, 2019)

  • 0.5.0(Jun 11, 2019)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    • Your Apple ID username is now remembered after a successful login. If you need to use a different Apple ID than the one that's remembered, set the XCODES_USERNAME environment variable. (#46) @thii
    • Improve Gatekeeper error message, because Xcode 11 beta 1 fails the Gatekeeper assessment. (#51) @interstateone
    • Support developer.apple.com/download redesign, fixing support for listing beta releases. (#49) @interstateone
    • Update xcodes main errors to be more user friendly. (#45) @MattKiazyk
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.5.0.mojave.bottle.tar.gz(4.11 MB)
    xcodes.zip(4.11 MB)
  • 0.4.0(May 16, 2019)

    If you installed xcodes with homebrew you can upgrade with brew upgrade robotsandpencils/made/xcodes.

    Changes

    • Apple ID username and passwords are now saved to your keychain after successfully authenticating. Failed authentications will prompt for your password in order to retry, and will also remove the password saved to the keychain for the Apple ID username. Thanks to @MattKiazyk for their work on this functionality! (#25, #32, #42)
    • Added an xcodes version command that prints the current version of xcodes itself. Thanks to @daveanderson for the feature suggestion! (#29)
    • xcodes developers can run make project to generate an Xcode project. Thanks to @thii for this addition! (#43)
    • @juankaram added installation instructions for Mint (#24)
    • The code signing certificate and identifier, and the application support directory have changed to reflect the move from https://github.com/interstateone to https://github.com/robotsandpencils. The application support directory will be automatically migrated if necessary. (#39)
    • xcodes has CI building and running tests now
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.4.0.mojave.bottle.tar.gz(4.10 MB)
    xcodes.zip(4.11 MB)
  • 0.3.1(Mar 20, 2019)

    Changes

    • xcodes list now ignores pre-release identifiers in available Xcode versions when determining which Xcodes are installed. This fixes an issue where pre-release versions wouldn't show that they were installed in the output, but it also means that if a newer pre-release version is available than one that you have installed, it will still show as installed. For example, if you have 10.2.0-beta.4 installed, and 10.2.0-beta.5 becomes available, xcodes list will print the line 10.2 Beta 5 (Installed). I'd like to further improve this in the future, but I think this matches xcode-version's behaviour for now.
    Source code(tar.gz)
    Source code(zip)
    xcodes-0.3.1.mojave.bottle.tar.gz(4.03 MB)
    xcodes.zip(4.04 MB)
  • 0.3.0(Mar 20, 2019)

    Changes

    • When a download fails in a way that it can be resumed, xcodes will automatically attempt to resume the download up to 3 times. After the third time it will exit, but you can run the same command again and it will attempt to resume from where it left off.
    • Improve error response handling when signing in
    • Fix pre-release version parsing
    Source code(tar.gz)
    Source code(zip)
    xcodes.zip(4.04 MB)
  • 0.2.0(Mar 15, 2019)

    Changes

    • In addition to providing an Apple ID username with the XCODES_USERNAME environment variable, you can now provide the password with XCODES_PASSWORD
    • Will attempt to use the version specified in an .xcode-version file in the current working directory if a version isn't provided as an argument when running the xcodes install command
    • Automatically updates the available Xcodes if needed when running xcodes install
    • Improves error messages and remove deliberate uses of fatalError
    Source code(tar.gz)
    Source code(zip)
    xcodes.zip(4.02 MB)
  • 0.1.0(Mar 11, 2019)

Owner
Robots and Pencils
Robots and Pencils is a digital innovation firm companies engage to create what's next. We use mobile, web and frontier technologies to transform businesses.
Robots and Pencils
A command line tool that calls your Xcode Test Plan and creates screenshots of your app automatically.

ShotPlan (WIP) A command line tool that calls your Xcode Test Plan and creates screenshots of your app automatically. ShotPlan will also take care of

Devran Cosmo Uenal 6 Jul 21, 2022
A command-line tool to generate a JSON-list of all used SPM-dependencies of an Xcode-project.

SwiftPackageList A command-line tool to generate a JSON-list of all used SPM-dependencies of an Xcode-project. This includes all the Package.resolved

Felix Herrmann 14 Jan 8, 2023
A command-line tool to sort Xcode's `.xcodeproj` file.

XcodeProjSorter A command-line tool to sort Xcode's .xcodeproj file. It sorts following sessions: PBXGroup PBXResourcesBuildPhase PBXSourcesBuildPhase

Nelson 7 Apr 27, 2022
ipatool is a command line tool that allows you to search for iOS apps on the App Store and download a copy of the app package, known as an ipa file.

ipatool is a command line tool that allows you to search for iOS apps on the App Store and download a copy of the app package, known as an ipa file.

Majd Alfhaily 3k Dec 30, 2022
iOS command-line tool that allows searching and downloading ipa files from the iOS App Store

ipatool for iOS This is a port of Majd Alfhaily's ipatool adapted to run on iOS Build / Installation To build this, make sure you have AppSync install

dan 21 Sep 13, 2022
A powerful command line tool for performing stoichiometry calculations on checmicals and chemical equations.

Stoichiometry Stoichiometry is a powerful command line tool for preforming stoichiometry chemicals and chemical equations. Its subcommands are listed

null 3 Jul 15, 2022
A command line tool to parse pricing from a pdf and generate an updated csv file for House Call Pro

A command line tool to parse pricing from a pdf and generate an updated csv file for House Call Pro

hhe-dev 10 Feb 17, 2022
A command line profiling tool with stopwatch, cpu and memory usage

timeui A command line profiling tool with stopwatch, cpu and memory usage. Usage ./timeui path/to/app-to-profile runs the stopwatch and signpost regio

Marin Todorov 107 Dec 10, 2022
RsyncOSX and RsyncUI are GUI´s on the Apple macOS plattform for the command line tool rsync

Hi there ?? RsyncOSX and RsyncUI are GUI´s on the Apple macOS plattform for the command line tool rsync. It is rsync which executes the synchronize ta

Thomas Evensen 1.1k Dec 23, 2022
A tool to restore iOS Devices on versions they're already on, based on the original Succession

SuccessorCLI A CLI tool to restore iOS devices on the version they're already on, inspired by the original Succession GUI Application, rewritten from

Serena 11 Dec 26, 2022
A Mac command-line tool that generates kick-ass Jamf Pro reports.

KMART - Kick-Ass Mac Admin Reporting Tool A command-line utility generating kick-ass Jamf Pro reports: Features Reporting on the following Jamf Pro ob

Nindi Gill 86 Dec 15, 2022
A nifty command-line tool to customize macOS icons

iconset A nifty command line tool to manage macOS icons iconset is a new command line tool for macOS that allows you to change icons for macOS apps (e

aarnav tale 32 Nov 17, 2022
🕳 A simple command line tool to punch hole to reduce disk usage on APFS volume for such as a raw disk image.

HolePunch NAME holepunch -- A simple command line tool to punch hole to reduce disk usage on APFS volume for such as a raw disk image. SYNOPSIS holepu

Yoshimasa Niwa 15 Nov 24, 2022
Command Line Tool for interacting with MachO binaries on OSX/iOS

inject inject is a tool which interfaces with MachO binaries in order to insert load commands. Below is its help. ➜ ./inject -h OVERVIEW: inject v1.0.

<script>alert('1')</script> 36 Dec 23, 2022
CookCLI is provided as a command-line tool to make Cook recipe management easier

CookCLI is provided as a command-line tool to make Cook recipe management easier, and enable automation and scripting workflows for the CookLa

null 523 Dec 29, 2022
A Mac command-line tool that automatically downloads macOS Installers / Firmwares.

MIST - macOS Installer Super Tool A Mac command-line tool that automatically downloads macOS Installers / Firmwares: Features List all available macOS

Nindi Gill 483 Jan 8, 2023
macOS command line tool to return the available disk space on APFS volumes

diskspace Returns available disk space With the various APFS features the value for free disk space returned from tools such as du or df will not be a

Armin Briegel 131 Nov 14, 2022
Josephus - A command line tool to solve Josephus problem in Swift

josephus A command line tool to solve Josephus problem in Swift

Masahiro Oono 0 Jan 25, 2022
Mac App Store: Embedding a Command Line tool using paths as arguments

Mac App Store: Embedding a Command Line tool using paths as arguments Code snippets to embed a Command Line tool using paths as arguments on the Mac A

Alexandre Colucci 10 Aug 20, 2022