Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/liftoffcli/liftoff
CLI for creating and configuring new Xcode projects
https://github.com/liftoffcli/liftoff
project-template xcode
Last synced: 24 minutes ago
JSON representation
CLI for creating and configuring new Xcode projects
- Host: GitHub
- URL: https://github.com/liftoffcli/liftoff
- Owner: liftoffcli
- License: mit
- Created: 2012-10-19T00:58:18.000Z (over 12 years ago)
- Default Branch: main
- Last Pushed: 2020-06-27T18:22:35.000Z (over 4 years ago)
- Last Synced: 2024-10-29T17:50:53.844Z (3 months ago)
- Topics: project-template, xcode
- Language: Ruby
- Homepage:
- Size: 17.5 MB
- Stars: 1,603
- Watchers: 63
- Forks: 106
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-ios - liftoff - Another CLI for creating iOS projects. (Project setup / Other Parsing)
- awesome-ios-star - liftoff - Another CLI for creating iOS projects. (Project setup / Other Parsing)
README
#
**Liftoff is a CLI for creating and configuring iOS Xcode projects.**
> 👋 We need your help!
> We're looking for contributors and people willing to take over Liftoff maintenance.
> If you're interested, we'd love to hear from you! 👍## Installation
brew tap liftoffcli/formulae
brew install liftoffLiftoff was previously distributed via RubyGems. This method of installation has
been deprecated, and all new releases will be done through Homebrew. If you are
migrating from RubyGems, you should uninstall the gem version to avoid confusion
in the future.## Usage
Run this command in a directory
liftoff
View the documentation:
man liftoff
man liftoffrcWhen Liftoff finds an existing project in the current directory, it will
perform the following configurations:* Set the indentation level (In spaces, 4 by default).
* Treat warnings as errors for release schemes.
* Enable warnings at the project level, check `liftoffrc(5)` for a list of the warnings.
* Turn on Static Analysis for the project.
* Add a build phase shell script that [turns "TODO:" and "FIXME:" into
warnings][deallocated-todo].
* Add a build phase shell script that sets the version to the latest Git tag,
and the build number to the number of commits on master.
* Perform arbitrary configuration as defined in the user's `liftoffrc`. See
`liftoffrc(5)` for more information.
* Add default [.gitignore] and [.gitattributes] files.
* Initialize a new `git` repo and create an initial commit (if needed).[.gitignore]: https://github.com/liftoffcli/liftoff/blob/master/templates/gitignore
[.gitattributes]: https://github.com/liftoffcli/liftoff/blob/master/templates/gitattributes
[deallocated-todo]: http://deallocatedobjects.com/posts/show-todos-and-fixmes-as-warnings-in-xcode-4When you run Liftoff in a directory without a project file, it will create a
new directory structure for a project, and generate a well-configured Xcode
project in that subdirectory:```
$ cd ~/dev/
$ liftoff
Project name? MyCoolApp
Company name? thoughtbot
Author name? Gordon Fontenot
Prefix? MCA
Creating MyCoolApp
Creating MyCoolApp/Categories
Creating MyCoolApp/Classes
[snip]
```Liftoff will generate a brand new project for you based on the provided
values. Generating projects via Liftoff has these advantages:* Minimized time reorganizing the repository
* Sets up `git` repository automatically
* Defined group structure
* Matching directory structure on disk (linked to the proper group)
* Easily customizable
* Configurations can be shared easily### Configuration
You can use a `liftoffrc` file to speed up your workflow by defining your
preferred configuration for Liftoff.Liftoff will look for config files in the local directory and then the home
directory. If it can't find a key in `./.liftoffrc` or `~/.liftoffrc`, it will
use the default values. Check `liftoffrc(5)` for more information:man liftoffrc
You can see the [current liftoffrc on master][liftoffrc], but be aware that
the keys might not match up completely with the current released version.[liftoffrc]: https://github.com/liftoffcli/liftoff/blob/master/defaults/liftoffrc
### Directory Structure and Templates
One of the most powerful things that Liftoff can do for you is let you quickly
and easily customize your project's group and directory structure. By defining
a YAML dictionary inside your local or user `.liftoffrc`, you can completely
dictate the structure that will be created. This includes group structure,
order, placement of template files, etc. And remember that these groups will
be mimicked on disk as well.You can also create your own templates, or override the defaults by adding
them to `~/.liftoff/templates` or `./.liftoff/templates`. Liftoff will use the
same fallback order when looking for templates as it does for the
`.liftoffrc`.These files (and filenames) will be parsed with `ERB`, using the values
provided at run time (or the default values from a `liftoffrc`).### Note about Xcode 7.0
In Xcode 7.0, there is a bug that when combined with a bug in Liftoff 1.5
results in a crash when trying to launch a project generated by liftoff. This
bug is fixed in Liftoff 1.6, but if you have a project created with a version
of liftoff <= 1.5, you might experience this crash.To fix it:
1. Open the project in Xcode 6 or Xcode 7.1+
2. Remove `Main.storyboard` from the project (only need to remove the
reference, you don't need to trash the file itself)
3. Re-add `Main.storyboard` to the projectYour project should now open cleanly in Xcode 7.0.
Contributing
------------See the [CONTRIBUTING] document. Thank you, [contributors]!
[CONTRIBUTING]: CONTRIBUTING.md
[contributors]: https://github.com/liftoffcli/Liftoff/graphs/contributorsWe'd also love some help for maintaining Liftoff up-to-date on a more regular basis. If you're interested, we'd love to hear from you!
License
-------Liftoff is Copyright (c) 2015 thoughtbot, inc. It is free software, and may be
redistributed under the terms specified in the [LICENSE] file.[LICENSE]: /LICENSE.txt
About
-----![thoughtbot](https://thoughtbot.com/logo.png)
Liftoff was originally maintained and funded by thoughtbot, inc. The names and
logos for thoughtbot are trademarks of thoughtbot, inc.Similar projects
----------------* [XcodeGen by @yonaskolb](https://github.com/yonaskolb/XcodeGen)
* [xcake by @jcampbell05](https://github.com/jcampbell05/xcake)
* [struct by @lyptt](https://github.com/lyptt/struct)
* [Cookie-Cutter](http://cookiecutter.readthedocs.io/en/latest/)