Shuttle
                                
                                 Shuttle copied to clipboard
                                
                                    Shuttle copied to clipboard
                            
                            
                            
                        Swift package heavily inspired by https://spaceship.airforce
Shuttle
This basically a port of fastlane's spaceship which is an HTTP client for interacting with the Apple Developer portal and iTunesConnect.
NOTE: This is still a work in progress and there is still much to do, here is a rough list of things I would like to see in the near future
Example
To see an example of the currently available APIs available see Sources/Development/main.swift
ToDO List:
- [ ] Support all API endpoints listed below
- [ ] >90% Code Coverage
- [ ] CLI tool
API Endpoints
Overview of the used API endpoints
- https://idmsa.apple.com: Used to authenticate to get a valid session
- https://developerservices2.apple.com:- Get a list of all available provisioning profiles
- Register new devices
 
- https://developer.apple.com:- List all devices, certificates, apps and app groups
- Create new certificates, provisioning profiles and apps
- Disable/enable services on apps and assign them to app groups
- Delete certificates and apps
- Repair provisioning profiles
- Download provisioning profiles
- Team selection
 
- https://itunesconnect.apple.com:- Managing apps
- Managing beta testers
- Submitting updates to review
- Managing app metadata
 
- https://du-itc.itunesconnect.apple.com:- Upload icons, screenshots, trailers ...
 
Contributing
To get things running locally after cloning the repo:
$ swift package --enable-prefetching generate-xcodeproj
$ open Shuttle.xcodeproj
If you want to be able to run the Sources/Development/main.swift file to test changes you just need to switch to use the Development scheme in Xcode and then edit the scheme settings and add two environment variables for USERNAME and PASSWORD (don't worry the Xcode project is in the gitignore so you won't accidently push up your credentials to the repo)