{"id":13815554,"url":"https://github.com/nomad-cli/cupertino","last_synced_at":"2025-09-27T10:30:52.878Z","repository":{"id":3832466,"uuid":"4913644","full_name":"nomad-cli/cupertino","owner":"nomad-cli","description":"CLI for the Apple Dev Center","archived":true,"fork":false,"pushed_at":"2021-06-20T10:18:12.000Z","size":207,"stargazers_count":2636,"open_issues_count":0,"forks_count":191,"subscribers_count":72,"default_branch":"master","last_synced_at":"2024-09-26T22:43:15.648Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nomad-cli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-07-05T19:23:31.000Z","updated_at":"2024-08-25T21:37:02.000Z","dependencies_parsed_at":"2022-08-17T23:55:26.182Z","dependency_job_id":null,"html_url":"https://github.com/nomad-cli/cupertino","commit_stats":null,"previous_names":["nomad/cupertino","mattt/cupertino"],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomad-cli%2Fcupertino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomad-cli%2Fcupertino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomad-cli%2Fcupertino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nomad-cli%2Fcupertino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nomad-cli","download_url":"https://codeload.github.com/nomad-cli/cupertino/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234426156,"owners_count":18830856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T04:03:35.589Z","updated_at":"2025-09-27T10:30:52.551Z","avatar_url":"https://github.com/nomad-cli.png","language":"Ruby","readme":"![Cupertino](https://raw.github.com/nomad/nomad.github.io/assets/cupertino-banner.png)\n\n**Note:** Cupertino stopped working due to a recent change on the Apple Developer Portal. A maintained alternative is to use [spaceship](https://spaceship.airforce) to communicate with Apple's Developer back-end, or use any of the [fastlane tools](https://fastlane.tools), like [match](https://github.com/fastlane/fastlane/tree/master/match) or [sigh](https://github.com/fastlane/fastlane/tree/master/sigh).\n\n------\n\nAutomate administrative tasks that you would normally have to do through the Apple Dev Center websites. Life's too short to manage device identifiers by hand!\n\n\u003e Cupertino is named after [Cupertino, CA](http://en.wikipedia.org/wiki/Cupertino,_California): home to Apple, Inc.'s world headquarters.\n\u003e It's part of a series of world-class command-line utilities for iOS development, which includes [Shenzhen](https://github.com/mattt/shenzhen) (Building \u0026 Distribution), [Houston](https://github.com/mattt/houston) (Push Notifications), [Venice](https://github.com/mattt/venice) (In-App Purchase Receipt Verification), [Dubai](https://github.com/mattt/dubai) (Passbook pass generation), and [Nashville](https://github.com/nomad/nashville) (iTunes Store API).\n\n## Requirements\n\nCupertino requires the [Xcode Command Line Tools](https://developer.apple.com/xcode/), which can be installed with the following command:\n\n```\n$ xcode-select --install\n```\n\n## Installation\n\n```\n$ gem install cupertino\n```\n\n## Usage\n\n### Authentication\n\n```\n$ ios login\n```\n\n_Credentials are saved in the Keychain. You will not be prompted for your username or password by commands while you are logged in. (Mac only)_\n\nAlternatively, username and password can also be provided by setting the\n`IOS_USERNAME` and `IOS_PASSWORD` environment variables respectively.\n\n### Devices\n\n```\n$ ios devices:list\n\n+------------------------------+---------------------------------------+\n|       Listing 2 devices. You can register 98 additional devices.     |\n+---------------------------+------------------------------------------+\n| Device Name               | Device Identifier                        |\n+---------------------------+------------------------------------------+\n| Johnny Appleseed iPad     | 0123456789012345678901234567890123abcdef |\n| Johnny Appleseed iPhone   | abcdef0123456789012345678901234567890123 |\n+---------------------------+------------------------------------------+\n\n$ ios devices:add \"iPad 1\"=abc123\n$ ios devices:add \"iPad 2\"=def456 \"iPad 3\"=ghi789 ...\n```\n\n### Provisioning Profiles\n\n```\n$ ios profiles:list\n\n+----------------------------------+--------------+---------+\n| Profile                          | App ID       | Status  |\n+----------------------------------+--------------+---------+\n| iOS Team Provisioning Profile: * | ABCDEFG123.* | Valid   |\n+----------------------------------+--------------+---------+\n```\n\n---\n\n```\n$ ios profiles:manage:devices\n```\n\n_Opens an editor with a list of devices, each of which can be commented / uncommented to turn them off / on for that provisioning profile._\n\n```\n# Comment / Uncomment Devices to Turn Off / On for Provisioning Profile\nJohnny Appleseed iPad 0123456789012345678901234567890123abcdef\n# Johnny Appleseed iPhone abcdef0123456789012345678901234567890123\n```\n\n```\n$ ios profiles:devices:add MyApp_Development_Profile \"Johnny Appleseed iPad\"=0123456789012345678901234567890123abcdef \"Johnny Appleseed iPhone\"=abcdef0123456789012345678901234567890123\n```\n\n_Adds (without an editor) a list of devices to a provisioning profile_\n\n```\n$ ios profiles:devices:remove MyApp_Development_Profile \"Johnny Old iPad\"=0123456789012345678901234567890123abcdef \"Johnny Old iPhone\"=abcdef0123456789012345678901234567890123\n```\n\n_Removes (without an editor) a list of devices from a provisioning profile_\n\n---\n\n```\n$ ios profiles:devices:list MyApp_Development_Profile\n\n+--------------------------+------------------------------------------+--------+\n|         Listing devices for provisioning profile MyApp_Development_Profile   |\n+--------------------------+------------------------------------------+--------+\n| Device Name              | Device Identifier                        | Active |\n+--------------------------+------------------------------------------+--------+\n| Person's iPhone 5        | 888888883e48a3e0458aab2691d565a8a63f7888 |   Y    |\n+--------------------------+------------------------------------------+--------+\n\n```\n\n### App IDs\n\n```\n$ ios app_ids:list\n\n+-----------------------------+------------------------+-------------------+-------------------+\n| Bundle Seed ID              | Description            | Development       | Distribution      |\n+-----------------------------+------------------------+-------------------+-------------------+\n| 123ABCDEFG.com.mattt.bundle | App Bundle Description | Passes            | Passes            |\n|                             |                        | Data Protection   | Data Protection   |\n|                             |                        | iCloud            | iCloud            |\n|                             |                        | In-App Purchase   | In-App Purchase   |\n|                             |                        | Game Center       | Game Center       |\n|                             |                        | Push Notification | Push Notification |\n+-----------------------------+------------------------+-------------------+-------------------+\n```\n\n```\n$ ios app_ids:add \"App Bundle Description\"=123ABCDEFG.com.mattt.bundle\n```\n\n### Certificates\n\n```\n$ ios certificates:list\n\n+------------------+----------------------------------+-----------------+--------+\n| Name             | Provisioning Profiles            | Expiration Date | Status |\n+------------------+----------------------------------+-----------------+--------+\n| Johnny Appleseed | iOS Team Provisioning Profile: * | Dec 23, 2012    | Issued |\n+------------------+----------------------------------+-----------------+--------+\n```\n\n```\n$ ios certificates:download\n$ ios certificates:download --type distribution\n$ ios certificates:download NAME\n```\n\n## CSV Output\n\nThe following commands will format their output as [comma-separated values](http://en.wikipedia.org/wiki/Comma-separated_values) when the `--format csv` argument is passed:\n\n- `app_ids:list`\n- `devices:list`\n- `profiles:list`\n- `profiles:manage:devices:list`\n\n## Commands\n\n- `login`\n- `logout`\n- `devices:add`\n- `devices:list`\n- `profiles:list`\n- `profiles:manage:devices`\n- `profiles:manage:devices:add`\n- `profiles:manage:devices:remove`\n- `profiles:download`\n- `profiles:download:all`\n- `profiles:devices:list`\n- `certificates:list`\n- `certificates:download`\n- `app_ids:list`\n\n## Options\n\nGlobal options:\n\n- `-u` : Username\n- `-p` : Password\n- `--team` : Team Identifier\n- `--info` : Set log level to INFO\n- `--debug` : Set log level to DEBUG\n- `--format` : Output options are `table` or `csv` \n\nSpecific options for certain commands:\n\n- `--type` : Options are `development` or `distribution`\n\n## Proxies\n\nCupertino will access the provisioning portal through a proxy if the `HTTP_PROXY` environment variable is set, with optional credentials `HTTP_PROXY_USER` and `HTTP_PROXY_PASSWORD`.\n\n## License\n\nCupertino is released under an MIT license. See LICENSE for more information.\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnomad-cli%2Fcupertino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnomad-cli%2Fcupertino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnomad-cli%2Fcupertino/lists"}