{"id":3103,"url":"https://github.com/liftoffcli/liftoff","last_synced_at":"2025-12-18T11:25:27.903Z","repository":{"id":5122879,"uuid":"6287880","full_name":"liftoffcli/liftoff","owner":"liftoffcli","description":"CLI for creating and configuring new Xcode projects","archived":false,"fork":false,"pushed_at":"2020-06-27T18:22:35.000Z","size":18350,"stargazers_count":1603,"open_issues_count":31,"forks_count":106,"subscribers_count":63,"default_branch":"main","last_synced_at":"2024-10-29T17:50:53.844Z","etag":null,"topics":["project-template","xcode"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"gmertk/GMStepper","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liftoffcli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-10-19T00:58:18.000Z","updated_at":"2024-09-26T02:42:48.000Z","dependencies_parsed_at":"2022-07-26T18:02:22.063Z","dependency_job_id":null,"html_url":"https://github.com/liftoffcli/liftoff","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liftoffcli%2Fliftoff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liftoffcli%2Fliftoff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liftoffcli%2Fliftoff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liftoffcli%2Fliftoff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liftoffcli","download_url":"https://codeload.github.com/liftoffcli/liftoff/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247829491,"owners_count":21002995,"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":["project-template","xcode"],"created_at":"2024-01-05T20:16:31.467Z","updated_at":"2025-12-18T11:25:22.566Z","avatar_url":"https://github.com/liftoffcli.png","language":"Ruby","funding_links":[],"categories":["Project setup","Ruby","WebSocket"],"sub_categories":["Other Parsing","Other free courses","Web View"],"readme":"# \u003cimg src=\"http://liftoffcli.github.io/liftoff/logo.png\" alt=\"Logo\" width=\"25%\"\u003e\n\n**Liftoff is a CLI for creating and configuring iOS Xcode projects.**\n\n\u003e 👋 We need your help!\n\u003e We're looking for contributors and people willing to take over Liftoff maintenance.\n\u003e If you're interested, we'd love to hear from you! 👍\n\n## Installation\n\n    brew tap liftoffcli/formulae\n    brew install liftoff\n\nLiftoff was previously distributed via RubyGems. This method of installation has\nbeen deprecated, and all new releases will be done through Homebrew. If you are\nmigrating from RubyGems, you should uninstall the gem version to avoid confusion\nin the future.\n\n## Usage\n\nRun this command in a directory\n\n    liftoff\n\nView the documentation:\n\n    man liftoff\n    man liftoffrc\n\nWhen Liftoff finds an existing project in the current directory, it will\nperform the following configurations:\n\n* Set the indentation level (In spaces, 4 by default).\n* Treat warnings as errors for release schemes.\n* Enable warnings at the project level, check `liftoffrc(5)` for a list of the warnings.\n* Turn on Static Analysis for the project.\n* Add a build phase shell script that [turns \"TODO:\" and \"FIXME:\" into\n  warnings][deallocated-todo].\n* Add a build phase shell script that sets the version to the latest Git tag,\n  and the build number to the number of commits on master.\n* Perform arbitrary configuration as defined in the user's `liftoffrc`. See\n  `liftoffrc(5)` for more information.\n* Add default [.gitignore] and [.gitattributes] files.\n* Initialize a new `git` repo and create an initial commit (if needed).\n\n[.gitignore]: https://github.com/liftoffcli/liftoff/blob/master/templates/gitignore\n[.gitattributes]: https://github.com/liftoffcli/liftoff/blob/master/templates/gitattributes\n[deallocated-todo]: http://deallocatedobjects.com/posts/show-todos-and-fixmes-as-warnings-in-xcode-4\n\nWhen you run Liftoff in a directory without a project file, it will create a\nnew directory structure for a project, and generate a well-configured Xcode\nproject in that subdirectory:\n\n```\n$ cd ~/dev/\n$ liftoff\nProject name? MyCoolApp\nCompany name? thoughtbot\nAuthor name? Gordon Fontenot\nPrefix? MCA\nCreating MyCoolApp\nCreating MyCoolApp/Categories\nCreating MyCoolApp/Classes\n[snip]\n```\n\nLiftoff will generate a brand new project for you based on the provided\nvalues. Generating projects via Liftoff has these advantages:\n\n* Minimized time reorganizing the repository\n* Sets up `git` repository automatically\n* Defined group structure\n* Matching directory structure on disk (linked to the proper group)\n* Easily customizable\n* Configurations can be shared easily\n\n### Configuration\n\nYou can use a `liftoffrc` file to speed up your workflow by defining your\npreferred configuration for Liftoff.\n\nLiftoff will look for config files in the local directory and then the home\ndirectory. If it can't find a key in `./.liftoffrc` or `~/.liftoffrc`, it will\nuse the default values. Check `liftoffrc(5)` for more information:\n\n    man liftoffrc\n\nYou can see the [current liftoffrc on master][liftoffrc], but be aware that\nthe keys might not match up completely with the current released version.\n\n[liftoffrc]: https://github.com/liftoffcli/liftoff/blob/master/defaults/liftoffrc\n\n### Directory Structure and Templates\n\nOne of the most powerful things that Liftoff can do for you is let you quickly\nand easily customize your project's group and directory structure. By defining\na YAML dictionary inside your local or user `.liftoffrc`, you can completely\ndictate the structure that will be created. This includes group structure,\norder, placement of template files, etc. And remember that these groups will\nbe mimicked on disk as well.\n\nYou can also create your own templates, or override the defaults by adding\nthem to `~/.liftoff/templates` or `./.liftoff/templates`. Liftoff will use the\nsame fallback order when looking for templates as it does for the\n`.liftoffrc`.\n\nThese files (and filenames) will be parsed with `ERB`, using the values\nprovided at run time (or the default values from a `liftoffrc`).\n\n### Note about Xcode 7.0\n\nIn Xcode 7.0, there is a bug that when combined with a bug in Liftoff 1.5\nresults in a crash when trying to launch a project generated by liftoff. This\nbug is fixed in Liftoff 1.6, but if you have a project created with a version\nof liftoff \u003c= 1.5, you might experience this crash.\n\nTo fix it:\n\n1. Open the project in Xcode 6 or Xcode 7.1+\n2. Remove `Main.storyboard` from the project (only need to remove the\n   reference, you don't need to trash the file itself)\n3. Re-add `Main.storyboard` to the project\n\nYour project should now open cleanly in Xcode 7.0.\n\nContributing\n------------\n\nSee the [CONTRIBUTING] document. Thank you, [contributors]!\n\n[CONTRIBUTING]: CONTRIBUTING.md\n[contributors]: https://github.com/liftoffcli/Liftoff/graphs/contributors\n\nWe'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!\n\nLicense\n-------\n\nLiftoff is Copyright (c) 2015 thoughtbot, inc. It is free software, and may be\nredistributed under the terms specified in the [LICENSE] file.\n\n[LICENSE]: /LICENSE.txt\n\nAbout\n-----\n\n![thoughtbot](https://thoughtbot.com/logo.png)\n\nLiftoff was originally maintained and funded by thoughtbot, inc. The names and\nlogos for thoughtbot are trademarks of thoughtbot, inc.\n\nSimilar projects\n----------------\n\n* [XcodeGen by @yonaskolb](https://github.com/yonaskolb/XcodeGen)\n* [xcake by @jcampbell05](https://github.com/jcampbell05/xcake)\n* [struct by @lyptt](https://github.com/lyptt/struct)\n* [Cookie-Cutter](http://cookiecutter.readthedocs.io/en/latest/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliftoffcli%2Fliftoff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliftoffcli%2Fliftoff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliftoffcli%2Fliftoff/lists"}