Project

applebot

0.02
No commit activity in last 3 years
No release in over 3 years
A robot for Apple Developer Center and iTunes Connect tasks
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
>= 0

Runtime

 Project Readme

AppleBot - The Apple Robot

A CLI and Ruby library to manage Apple Developer Center and iTunes Connect tasks. Uses CasperJS for easy maintenance and flexibility.

Requirements

AppleBot requires CasperJS, which can be installed using Homebrew:

$ brew install casperjs --devel

Installation

$ gem install applebot

Usage

Commands

These commands run using iTunes Connect:

  • app:create - Creates an entry for a new app on iTunes Connect
  • app:update - Creates an entry for a new update to an existing app on iTunes Connect
  • app:reject_binary - Rejects the binary for a pending release (either new or an update)
  • app:remove_from_sale - Removes the app from sale in all territories

These commands run using the Apple Developer Center:

  • app_id:create - Creates a bundle identifier
  • app_id:delete - Removes a bundle identifier
  • profile:create - Creates a provisioning profile
  • profile:download - Downloads an existing provisioning profile
  • profile:list - Lists all provisioning profiles

These commands can run on either iTunes Connect or Apple Developer Center:

  • app_id:list - Lists all bundle identifiers

JSON Manifests

Most commands take in options - you can either pass them individually, or use a JSON manifest file like this:

{
    "name": "My new app",
    "app_id": "com.usepropeller.mynewapp"
}

For example, the following commands are equivalent usng this JSON manifest:

$ applebot app_id:create --name 'My new app' --app_id 'com.usepropeller.mynewapp'
$ applebot app_id:create --manifest ./manifest.json
> AppleBot.app_id.create(name: 'My new app', app_id: 'com.usepropeller.mynewapp')
> AppleBot.app_id.create(manifest './manifest.json')

CLI

AppleBot installs an applebot command, which you can explore with -h flags:

$ applebot -h

  Commands:
    app:create           Create App
    app:reject_binary    Reject the binary of an pending release
    app:remove_from_sale Remove app from sale
    app:update           Update App
    app_id:create        Create App ID
    app_id:delete        Delete App ID
    app_id:list          List App IDs
    help                 Display global or [command] help documentation.
    profile:create       Create Provisioning Profile
    profile:download     Download a Provisioning Profile
    profile:list         List Provisioning Profiles

  Global Options:
    --manifest FILE.json Use a JSON file to load options for each command
    --username USERNAME  Username to login to Apple Service, or $APPLEBOT_USERNAME
    --password PASSWORD  Password to login to Apple Service, or $APPLEBOT_PASSWORD
    --format FORMAT      Output format - ['json', 'pretty']
    --verbose            Verbose output

Authentication

For every command, you can pass --username and --password flags to enter you auth credentials; you can also set APPLEBOT_USERNAME and APPLEBOT_PASSWORD environment variables.

Ruby

The Ruby library uses an AppleBot module, and its methods map to the CLI commands:

> require 'applebot'
=> true
> AppleBot.app.create(options: here)

Authentication

The Ruby library has a few shortcuts for logging in to Apple services:

# pass as options
AppleBot.app.create(username: "username", password: "password")

# run in block
AppleBot.with_credentials(username: "username", password: "password") do
    AppleBot.app.create(options)
end

# set globally
AppleBot.set_credentials(username: "username", password: "password")

Output

The :list commands are meant to return some data. If you're using the Ruby library, you'll receive an Array when the command is done; if you're using the CLI, the last line will output a JSON object with one entry.

AppleBot.app_ids.all
=> ["com.usepropeller.myapp"]
$ applebot app_ids:all
{"app_ids": ["com.usepropeller.myapp"]}

If you're using any other command (which generally create side-effects), the end result will be true in Ruby, or exit code 0 on the CLI.

Verbose & Pretty Output

You can base a --verbose flag (or a verbose: true option in Ruby) to see all of the output as each script processes. There are two output formats, json and pretty, which you are set with either the --format flag or format: 'format_string' in Ruby.

Contact

Clay Allsopp

License

AppleBot is available under the MIT license. See the LICENSE file for more info.