All Projects → RobotsAndPencils → Xcodes

RobotsAndPencils / Xcodes

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

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Xcodes

Xcodesapp
The easiest way to install and switch between multiple versions of Xcode - with a mouse click.
Stars: ✭ 510 (-21.9%)
Mutual labels:  xcode
Set Simulator Location
CLI for setting location in the iOS simulator
Stars: ✭ 563 (-13.78%)
Mutual labels:  xcode
Badgehub
A way to quickly add a notification badge icon to any view. Make any view of a full-fledged animated notification center.
Stars: ✭ 592 (-9.34%)
Mutual labels:  xcode
Xcodeway
⛵️ An Xcode Source Editor Extension that helps navigating to many places easier
Stars: ✭ 530 (-18.84%)
Mutual labels:  xcode
X Swiftformat
X-SwiftFormat extension for Xcode
Stars: ✭ 556 (-14.85%)
Mutual labels:  xcode
Zlgotosandboxplugin
You can quickly enter the iOS simulator Xcode plugin!
Stars: ✭ 571 (-12.56%)
Mutual labels:  xcode
Clipy
Clipboard extension app for macOS.
Stars: ✭ 5,574 (+753.6%)
Mutual labels:  xcode
Xcdiff
A tool which helps you diff xcodeproj files.
Stars: ✭ 641 (-1.84%)
Mutual labels:  xcode
Fasteasymapping
A tool for fast serializing & deserializing of JSON
Stars: ✭ 556 (-14.85%)
Mutual labels:  xcode
Flightanimator
Advanced Natural Motion Animations, Simple Blocks Based Syntax
Stars: ✭ 588 (-9.95%)
Mutual labels:  xcode
Mbicons
MBIcons contains over 200 icons that can be resized to any dimensions as they are drawn using NSBezierPath.
Stars: ✭ 537 (-17.76%)
Mutual labels:  xcode
Pika
An open-source colour picker app for macOS
Stars: ✭ 550 (-15.77%)
Mutual labels:  xcode
Sidemenu
Simple side/slide menu control for iOS, no code necessary! Lots of customization. Add it to your project in 5 minutes or less.
Stars: ✭ 5,267 (+706.58%)
Mutual labels:  xcode
Designcode Swiftui
📱 An app fully written in SwiftUI showcasing beautiful design and animations.
Stars: ✭ 529 (-18.99%)
Mutual labels:  xcode
Learningmasteringalgorithms C
Mastering Algorithms with C 《算法精解:C语言描述》源码及Xcode工程、Linux工程
Stars: ✭ 615 (-5.82%)
Mutual labels:  xcode
Rangeseekslider
RangeSeedSlider provides a customizable range slider like a UISlider.
Stars: ✭ 524 (-19.75%)
Mutual labels:  xcode
Swiftinstagram
Instagram API client written in Swift
Stars: ✭ 570 (-12.71%)
Mutual labels:  xcode
Awesome Swift Korean Lecture
훌륭한 Swift 세션 동영상(강좌), 한글 자막있는 혹은 한국어 강의 정보 링크 모음 (Awesome Swift Korean lecture information)
Stars: ✭ 649 (-0.61%)
Mutual labels:  xcode
React Native Inappbrowser
📱InAppBrowser for React Native (Android & iOS) 🤘
Stars: ✭ 624 (-4.44%)
Mutual labels:  xcode
Monkeydev
CaptainHook Tweak、Logos Tweak and Command-line Tool、Patch iOS Apps, Without Jailbreak.
Stars: ✭ 5,492 (+741.04%)
Mutual labels:  xcode

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 <version>: Download a specific version of Xcode
  • install <version>: 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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].