Skip to content

dmrschmidt/ios-toolchain

Repository files navigation

iOS Toolchain

Build Status

A collection of rake tasks that help you keep a clean codebase and ease some of the daily pains when working in teams, like handling provisioning certificates.

Installation

Add this line to your application's Gemfile:

gem 'ios_toolchain'

Next, you need to make the included rake tasks available to your environment.

Add the following line to your Rakefile:

require 'ios_toolchain/tasks'

Once this is done, verify that the tasks are now available by checking the output of rake -T.

Finally, most tasks require some configuration, e.g. to know where your Xcode project is located and what schemes and tasks exist. This configuration is read from a .ios_toolchain.yml file, which still needs to be created. Run

$ rake toolchain:bootstrap

You should now have an automatically configured .ios_toolchain.yml, which you can open in the editor of your choice if you need any further customization.

Important Note: For the above auto configuration, it is assumed that your *.xcodeproj file is in the root of your repository, which is also where the .ios_toolchain.yml has to be located. If your project structure differs, you can pass the path to your Xcode project file as an optional paramater to the above command.

Usage

Tasks

This is the full list of available tasks, as output by rake -T:

rake git:check_for_uncommitted_changes            # Checks for uncommitted changes and aborts if any are found
rake git:push_origin                              # Pushes the current branch to origin
rake ios:build:acceptance                         # Builds the app with Acceptance configuration
rake ios:build:beta                               # Builds the app with Beta configuration
rake ios:build:default                            # Builds the app with Default configuration
rake ios:build:with[output_path,configuration]    # Builds the app with specified Configuration to output path
rake ios:carthage:fetch                           # Fetches our Carthage dependencies to the locked in versions
rake ios:carthage:update                          # updates our Carthage dependencies to the latest version
rake ios:clean                                    # Cleans the build & resets simulator
rake ios:clean:build                              # Cleans the build
rake ios:clean:simulator                          # Resets the simulator
rake ios:export:archive[xcarchive_path,ipa_path]  # builds the app
rake ios:provisioning:copy                        # copies provisioning profiles from the repo to the appropriate system location
rake ios:specs                                    # Run all the tests: unit and UI, 32bit and 64bit
rake ios:specs:slim                               # Run 64bit unit tests only
rake ios:specs:ui[skip_32bit]                     # Run the UI tests (optionally skip 32 bit devices)
rake ios:specs:unit[skip_32bit]                   # Run the unit tests (optionally skip 32 bit devices)
rake ios:tidy                                     # Reports and attempts to tidy up common cleanliness problems with the codebase
rake ios:tidy:lint                                # Runs swiftlint
rake ios:tidy:project_file                        # Sorts the project file
rake ios:tidy:specs                               # Unfocusses any focussed Quick specs
rake ios:tidy:whitespace                          # Removes trailing whitespace from code files
rake shipit                                       # Checks that we're ready to push, and then pushes the current branch to origin
rake toolchain:bootstrap[project_root]            # Bootstraps iOS Toolchain configuration (project_root optional)
rake validate                                     # Checks you if you need to do any cleanup of the code before you push

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/dmrschmidt/ios_toolchain. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install.