deliver •
snapshot •
frameit •
PEM •
sigh •
produce
-------
produce
============
[![Twitter: @KauseFx](https://img.shields.io/badge/contact-@KrauseFx-blue.svg?style=flat)](https://twitter.com/KrauseFx)
[![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/KrauseFx/produce/blob/master/LICENSE)
[![Gem](https://img.shields.io/gem/v/produce.svg?style=flat)](http://rubygems.org/gems/produce)
###### Create new iOS apps on iTunes Connect and Dev Portal using your command line
##### This tool was sponsored by [AppInstitute](http://appinstitute.co.uk/).
Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/KrauseFx)
-------
Features •
Installation •
Usage •
How does it work? •
Tips •
Need help?
-------
produce
is part of fastlane: connect all deployment tools into one streamlined workflow.
# Features
- **Create** new apps on both iTunes Connect and the Apple Developer Portal
- Support for **multiple Apple accounts**, storing your credentials securely in the Keychain
# Installation
sudo gem install produce
Make sure, you have the latest version of the Xcode command line tools installed:
xcode-select --install
Install phantomjs (this is needed to control the Apple Developer Portal)
brew update && brew install phantomjs
If you don't already have homebrew installed, [install it here](http://brew.sh/).
# Usage
produce
## Environment Variables
In case you want to pass more information to `produce`:
- `PRODUCE_USERNAME` (your iTunes Connect username)
- `PRODUCE_APP_IDENTIFIER` (the bundle identifier of the new app)
- `PRODUCE_APP_NAME` (the name of the new app)
- `PRODUCE_LANGUAGE` (the language you want your app to use, e.g. `English`, `German`)
- `PRODUCE_VERSION` (the initial app version)
- `PRODUCE_SKU` (the SKU you want to use, which must be a unique number)
- `PRODUCE_TEAM_ID` (the Team ID, e.g. `Q2CBPK58CA`)
- `PRODUCE_TEAM_NAME` (the Team Name, e.g. `Felix Krause`)
## [`fastlane`](https://github.com/KrauseFx/fastlane) Integration
Your `Fastfile` should look like this
```ruby
lane :appstore do
produce({
produce_username: 'felix@krausefx.com',
produce_app_identifier: 'com.krausefx.app',
produce_app_name: 'MyApp',
produce_language: 'English',
produce_version: '1.0',
produce_sku: 123,
produce_team_name: 'SunApps GmbH' # only necessary when in multiple teams
})
deliver
end
```
To use the newly generated app in `deliver`, you need to add this line to your `Deliverfile`:
```ruby
apple_id ENV['PRODUCE_APPLE_ID']
```
This will tell `deliver`, which `App ID` to use, since the app is not yet available in the App Store.
# How does it work?
```produce``` will access the ```iOS Dev Center``` to create your `App ID`. Check out the full source code: [developer_center.rb](https://github.com/KrauseFx/produce/blob/master/lib/produce/developer_center.rb).
After finishing the first step, `produce` will access `iTunes Connect` to create the new app with some initial values. Check out the full source code: [itunes_connect.rb](https://github.com/KrauseFx/produce/blob/master/lib/produce/itunes_connect.rb).
You'll still have to fill out the remaining information (like screenshots, app description and pricing). You can use [deliver](https://github.com/KrauseFx/deliver) to upload your app metadata using a CLI
## How is my password stored?
```produce``` uses the [password manager](https://github.com/KrauseFx/CredentialsManager) from `fastlane`. Take a look the [CredentialsManager README](https://github.com/KrauseFx/CredentialsManager) for more information.
# Tips
## [`fastlane`](http://fastlane.tools) Toolchain
- [`fastlane`](http://fastlane.tools): Connect all deployment tools into one streamlined workflow
- [`deliver`](https://github.com/KrauseFx/deliver): Upload screenshots, metadata and your app to the App Store using a single command
- [`snapshot`](https://github.com/KrauseFx/snapshot): Automate taking localized screenshots of your iOS app on every device
- [`frameit`](https://github.com/KrauseFx/frameit): Quickly put your screenshots into the right device frames
- [`PEM`](https://github.com/KrauseFx/pem): Automatically generate and renew your push notification profiles
- [`sigh`](https://github.com/KrauseFx/sigh): Because you would rather spend your time building stuff than fighting provisioning
# Need help?
- If there is a technical problem with `produce`, submit an issue.
- I'm available for contract work - drop me an email: produce@krausefx.com
# License
This project is licensed under the terms of the MIT license. See the LICENSE file.
# Contributing
1. Create an issue to start a discussion about your idea
2. Fork it (https://github.com/KrauseFx/produce/fork)
3. Create your feature branch (`git checkout -b my-new-feature`)
4. Commit your changes (`git commit -am 'Add some feature'`)
5. Push to the branch (`git push origin my-new-feature`)
6. Create a new Pull Request