What's Tuist 🕺
Tuist is a command line tool that helps you generate, maintain and interact with Xcode projects.
It's open source and written in Swift.
Running script (Recommended)
bash <(curl -Ls https://install.tuist.io)
Bootstrap your first project 🌀
tuist init --platform ios tuist generate # Generates Xcode project & workspace tuist build # Builds your project
Check out the project "Getting Started" guide to learn more about Tuist and all its features.
The repository is a monorepo with multiple projects:
Do you want to know more about what Tuist can offer you? Or perhaps want to contribute to the project and you need a starting point? You can check out the project documentation.
Supported by MacStadium
MacStadium supports this project by providing Mac mini hardware that we can use for running performance tests.
If you are interested in contributed to the project, our documentation has a section with resources for contributors. We recommend starting from this page.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
You may find interesting
1.18.1 - Manaslu - 2020-09-19 08:34:51
1.18.0 - Himalaya - 2020-09-17 09:29:48
- Possibility to build schemes that are not part of any entry node #1761 by @fortmarek
tuist lint code- command to lint the Swift code using Swiftlint #1682 by @laxmorek
tuist doc- command to generate documentation for your modules using SwiftDoc #1683 by @facumenzella
- Breaking Command for linting a workspace or a project has been renamed from
tuist lint project#1682 by @laxmorek
- Breaking UpCarthage should perform bootstrap instead of update #1744 by @softmaxsg
- Add excluding argument to
DefaultSettings#1746 by @rist.
- Synthesize resource interface accessors #1635 by @fortmarek
- Graph command now adds different colors and shapes for different types of targets and dependencies #1763 by @natanrolnik
1.17.0 - Luft - 2020-09-04 06:47:49
tuist focusonly works with
Project.swift#1739 by @pepibumur.
- Breaking a target or a list of targets is required for
tuist focus#1739 by @pepibumur.
- Breaking cache is enabled by default in
tuist focus#1739 by @pepibumur.
1.16.0 - Alhambra - 2020-09-01 10:25:04
- Breaking Support for Xcode 11.3.x and Xcode 11.4.x #1604 by @fortmarek
tuist generate#1712 by @pepibumur.
--openargument to the
tuist generatecommand #1712 by @pepibumur.
--no-openargument to the
tuist focuscommand to support disabling opening the project #1712 by @pepibumur.
- Support for running Tuist through
swift project#1713 by @pepibumur.
- Generate the default
Info.plistfile for static frameworks that only contain resources #1661 by @Juanpe
- Fix Carthage support for binary dependencies #1675 by @softmaxsg
- Use profile filename to match targets and configs #1690 by @rist
1.15.0 - Riga - 2020-09-16 08:19:09
- Fix name collision when having multiple templates #1600 by @fortmarek
- Allow to cache and warm static frameworks too (only dynamic frameworks were cached before) #1590 by @RomainBoulay
- Add graph visualization in Tuist graph command: "tuist graph --format=png" #1624 by @AndreaCipriani
- Add support for
.xctestdependency for tvOS targets #1597 by @kwridan.
- Fix missing ui test host applications for apps with "-" characters in their name #1630 by @kwridan.
1.14.0 - Spetzi - 2020-08-07 09:51:06
- Disable SwiftLint in the generated synthesized interface for resources #1574 by @pepibumur.
- Synthesized accessors for framework targets not resolving the path #1575 by @pepibumur.
- Read coredata version from /.xccurrentversion file #1572 by @matiasvillaverde.
- Support for
tuist generatecommand #1576 by @pepibumur.
- Included that importing target name in the duplicate dependency warning message #1573 by @thedavidharris
- Support to build and run the project on Xcode 12 by fixing namespace collisions on Logger #1579 by @thedavidharris
1.13.1 - More Bella Vita - 2020-07-20 08:38:40
- Camelize the name of the Objective-C synthesized object by @pepibumur.
1.13.0 - Bella Vita - 2020-07-18 09:10:17
tuist focuscreating new
.package.resolved#1569 by @fortmarek
- Delete schemes whose targets have been replaced by .xcframeworks #1571 by @pepibumur.
1.12.2 - 2020-07-15 11:39:29
1.12.1 - Waka - 2020-07-15 09:52:19
Setup.swiftcorrectly checks package installation if the executable doesn't match the package name #1544 by @MatyasKriz.
- Update Package.swift to correctly encode revision kind as "revision" #1558 by @ollieatkinson.
- Treat SceneKit catalog the same way as asset catalog [#1546], by @natanrolnik
- Add core data models to the sources build phase #1542 by @kwridan.
- Improve app extensions autogenerated schemes #1545 by @kwridan.
- Ensure the latest semantic version is used when running via tuistenv #1562 by @kwridan.
tuist focusnot working for workspaces #1565 by @pepibumur.
1.12.0 - Arabesque - 2020-07-11 09:05:15
- Use the selected Xcode version when editing projects #1471 by @pepibumur.
- Search the
Setup.swiftfile upwards if it doesn't exist in the current directory #1513 by @pepibumur.
RxBlockingto list of dependencies for
TuistGenerator#1514 by @fortmarek.
- Uncommented iMessage extension product type #1515 by @olejnjak.
- Prettify the redirect page #1521 by @pepibumur.
- Implements two arguments on the
graphcommand #1540 by @jeroenleenarts.
1.11.1 - Volare far - 2020-06-22 09:36:44
- Missing schemes in generated project for editing #1467 by @fortmarek
tuist buildcleaning even if the
--cleanargument is not passed #1458 by @pepibumur.
1.11.0 - Volare - 2020-06-12 17:53:06
- Add support for watch architectures #1417 by @davidbrunow
- Add method to XcodeBuildController to show the build settings of a project #1422 by @pepibumur
- Support for passing the configuration to the
tuist buildcommand #1422 by @pepibumur
1.10.0 - Alma - 2020-06-05 11:41:28
1.9.0 - Speedy Gonzales - 2020-05-29 09:13:04
- Support for enabling the cloud insights feature #1335 by @pepibumur
- Value graph model #1336 by @pepibumur
- Breaking Support for setting diagnostics options to the test and run actions #1382 by @pepibumur
- Storing the cloud credentials failed because the Keychain syncing was enabled #1355 by @pepibumur.
tuist editdoesn't wait while the user edits the project in Xcode #1650 by @pepibumur.
- Remove CFBundleExecutable from iOS resource bundle target plists #1361 by @kwridan.
1.8.0 - 2020-05-11 07:24:39
1.7.1 - 2020-04-21 14:54:01
- Critical bug caused by a missing
SwiftToolsSupportdynamic library by @pepibumur.
1.7.0 - 2020-04-21 13:34:28
- Point swift tools support repo instead of SPM #1230 by @fortmarek
- Migrate to new argument parser #1154 by @fortmarek
- Only warn about copying Info.plist when it's the target's Info.plist #1203 by @sgrgrsn
tuist editnow edit's all project manifest #1231 by @julianalonso
- Support for setting the project id when configuring the cloud server #1247 by @pepibumur.
- Support for returning
SideEffectDescriptors from the graph mappers #1201 by @pepibumur.
- SwiftUI template #1180 by @fortmarek
SettingsDictionaryis a typealias for
[String: SettingValue]. #1229 by @natanrolnik. Many useful extension methods were added to
SettingsDictionary, allowing settings to be defined this way:
let baseSettings = SettingsDictionary() .appleGenericVersioningSystem() .automaticCodeSigning(devTeam: "TeamID") .bitcodeEnabled(true) .swiftVersion("5.2") .swiftCompilationMode(.wholemodule) .versionInfo("500", prefix: "MyPrefix")
1.6.0 - 2020-04-06 15:43:01
- Don't try to delete a file if it doesn't exist https://github.com/tuist/tuist/pull/1177 by @pepibumur
- Bump XcodeProj to 7.10.0 https://github.com/tuist/tuist/pull/1182 by @pepibumur
- Encrypt/decrypt command https://github.com/tuist/tuist/pull/1127 by @fortmarek
- A link to the example app in the uFeatures documentation https://github.com/tuist/tuist/pull/1176 by @pepibumur.
- Add ProjectGeneratorGraphMapping protocol and use it from ProjectGenerator https://github.com/tuist/tuist/pull/1178 by @pepibumur
CloudSessionControllercomponent to authenticate users https://github.com/tuist/tuist/pull/1174 by @pepibumur.
- Minor improvements https://github.com/tuist/tuist/pull/1179 by @pepibumur
1.5.4 - 2020-03-31 14:50:36
- Tuist not working with Xcode < 11.4 by @pepibumur.
1.5.3 - 2020-03-31 11:08:09
tuist inithttps://github.com/tuist/tuist/pull/1171 by @fortmarek
Multiple commands produce XXXXXerror produced by multiple test targets using “Embed Precompiled Frameworks” script https://github.com/tuist/tuist/pull/1118 by @paulsamuels
- Add possibility to skip generation of default schemes https://github.com/tuist/tuist/pull/1130 by @olejnjak
- Errors during the manifest parsing are not printed https://github.com/tuist/tuist/pull/1125 by @pepibumur.
- Warnings because test files are missing in the project scaffolded using the default
frameworktemplate https://github.com/tuist/tuist/pull/1172 by @pepibumur.
1.5.2 - 2020-03-27 08:15:07
- Projects generated with the
frameworktemplate generated by the
initcommand dont' compile https://github.com/tuist/tuist/pull/1156 by @pepibumur.
- Generate only files with
.stencilextension https://github.com/tuist/tuist/pull/1153 by @fortmarek
- Support for Xcode 11.4 https://github.com/tuist/tuist/pull/1152 by @pepibumur.
SWIFT_VERSIONis set to 5.2 automatically if it's not set https://github.com/tuist/tuist/pull/1152 by @pepibumur.
1.5.1 - 2020-03-26 06:56:13
- Update config name in the default template https://github.com/tuist/tuist/pull/1150 by @pepibumur
- Fix example framework template not being generated https://github.com/tuist/tuist/pull/1149 by @fortmarek
1.5.0 - 2020-03-25 18:15:10
- Scaffold init https://github.com/tuist/tuist/pull/1129 by @fortmarek
- Scaffold generate https://github.com/tuist/tuist/pull/1126 by @fortmarek
- Scaffold load https://github.com/tuist/tuist/pull/1092 by @fortmarek
- Add Mint up https://github.com/tuist/tuist/pull/1131 by @mollyIV
- Remove redundant SDK paths from
FRAMEWORK_SEARCH_PATHShttps://github.com/tuist/tuist/pull/1145 by @kwridan
Graphingprotocol https://github.com/tuist/tuist/pull/1128 by @pepibumur
TargetNode's set operations https://github.com/tuist/tuist/pull/1095 by @kwridan
BuildPhaseGenerator's method of detecting assets and localized files https://github.com/tuist/tuist/pull/1094 by @kwridan
- Concurrent project generation https://github.com/tuist/tuist/pull/1096 by @kwridan
1.4.0 - 2020-03-16 09:29:10
PROJECT_DIRincludes a space https://github.com/tuist/tuist/pull/1037 by @fortmarek
- Fix code example compilation issues in "Project description helpers" documentation https://github.com/tuist/tuist/pull/1081 by @chojnac
- Allow specifying Project Organization name via new
Projectinitializer or via
Confignew GenerationOption. https://github.com/tuist/tuist/pull/1062 by @c0diq
tuist lintcommand https://github.com/tuist/tuist/pull/1043 by @pepibumur.
--verbosehttps://github.com/tuist/tuist/pull/1027 by @ollieatkinson.
TuistInsightstarget https://github.com/tuist/tuist/pull/1084 by @pepibumur.
Confighttps://github.com/tuist/tuist/pull/1085 by @pepibumur.
Config.swifthttps://github.com/tuist/tuist/pull/1083 by @pepibumur.
- Generator update - leveraging intermediate descriptors https://github.com/tuist/tuist/pull/1007 by @kwridan
TuistGenerator.Generatoris now deprecated and will be removed in a future version of Tuist.
1.3.0 - 2020-02-25 15:05:40
- When using
tuist editit's possible to run
tuist generatefrom Xcode by simply running the target https://github.com/tuist/tuist/pull/958 by @vytis
- Add FAQ section by @mollyIV
- Add benchmarking helper tool https://github.com/tuist/tuist/pull/957 by @kwridan.
- Add metal as a valid source extension https://github.com/tuist/tuist/pull/1023 by @natanrolnik
TuistAutomationhttps://github.com/tuist/tuist/pull/1019 by @pepibumur.
- Add metal as a valid source extension https://github.com/tuist/tuist/pull/1023 by @natanrolnik
- Fix static products false positive lint warning by https://github.com/tuist/tuist/pull/981 @kwridan.
- TargetAction path without ./ prefix https://github.com/tuist/tuist/pull/997 by @fortmarek
- Preserve xcuserdata when re-generating projects https://github.com/tuist/tuist/pull/1006 by @kwridan
- Stable sort order for bcsymbolmap paths by @paulsamuels
- Update XcodeProj to 7.8.0 https://github.com/tuist/tuist/pull/create?base=tuist%3Amaster&head=tuist%3Atarget-attributes by @pepibumur.
- Path sorting speed gains https://github.com/tuist/tuist/pull/980 by @adamkhazi
- Added support for HTTP_PROXY settings from shell environment. https://github.com/tuist/tuist/pull/1015 by @aegzorz
- Added "Base" to known regions. https://github.com/tuist/tuist/pull/1021 by @aegzorz
- Pull bundles from Google Cloud Storage https://github.com/tuist/tuist/pull/1028 by @pepibumur.
- 2020-01-31 19:05:48
- Best practices page to the documentation https://github.com/tuist/tuist/pull/843 by @pepibumur.
- Fail CI if there are broken links on the website https://github.com/tuist/tuist/pull/917 by @pepibumur.
- Excluding multiple files from a target https://github.com/tuist/tuist/pull/937 by @paciej00
- Better SEO to the website https://github.com/tuist/tuist/pull/945 by @pepibumur.
- Add fixture generator for stress testing Tuist https://github.com/tuist/tuist/pull/890 by @kwridan.
- The class name of the source files generated by the init command https://github.com/tuist/tuist/pull/850 by @pepibumur.
- Add RemoveHeadersOnCopy attribute for build files in copy files build phases https://github.com/tuist/tuist/pull/886 by @marciniwanicki
- Ensure precompiled frameworks of target applications aren't included in UI test targets https://github.com/tuist/tuist/pull/888 by @kwridan
- Make the scheme generation with testable targets stable https://github.com/tuist/tuist/pull/892 by @marciniwanicki
- Fix project header attributes https://github.com/tuist/tuist/pull/895 by @kwridan
- Excluding files from target doesn't work in all cases https://github.com/tuist/tuist/pull/913 by @vytis
- Support for Core Data mapping modules https://github.com/tuist/tuist/pull/911 by @andreacipriani
- Deep nested hierarchy in the project generated by
tuist edithttps://github.com/tuist/tuist/pull/923 by @pepibumur
- Turn models from
TuistCorethat are clases into structs https://github.com/tuist/tuist/pull/870 by @pepibumur.
1.1.0 - 2019-12-27 15:58:43
- Extracted loading logic into its own framework,
TuistLoaderhttps://github.com/tuist/tuist/pull/838 by @pepibumur.
TuistAutomationtargets https://github.com/tuist/tuist/pull/817 by @pepibumur.
- Support ignoring specific source file pattern when adding them to the target https://github.com/tuist/tuist/pull/811 by @vytis.
- Made targets testable if there is a corresponding test target https://github.com/tuist/tuist/pull/818 by @vytis.
- Release page to the documentation https://github.com/tuist/tuist/pull/841 by @pepibumur.
1.0.1 - 2019-12-17 11:17:05
- Pass through
DEVELOPER_DIRwhen set by the environment when determining the path to the currently selected Xcode. @ollieatkinson
1.0.0 - 2019-12-17 09:34:56
- Run pipelines with Xcode 11.2.1 on CI @pepibumur.
- Breaking Generate manifests target as part of the generated project https://github.com/tuist/tuist/pull/724 by @pepibumur.
- The installation no longer checks if the Swift version is compatible https://github.com/tuist/tuist/pull/727 by @pepibumur.
- Don't include the manifests in the generated workspace https://github.com/tuist/tuist/pull/754 by @pepibumur.
ProjectDescription.Settings.defaultSettingsnone case that don't override any
Targetsettings. https://github.com/tuist/tuist/pull/698 by @rowwingman.
ProjectEditorutility https://github.com/tuist/tuist/pull/702 by @pepibumur.
- Fix warnings in the project, refactor SHA256 diegest code https://github.com/tuist/tuist/pull/704 by @rowwingman.
Schemehttps://github.com/tuist/tuist/pull/697 by @grsouza.
tuist editcommand https://github.com/tuist/tuist/pull/703 by @pepibumur.
- Support interpolating formatted strings in the printer https://github.com/tuist/tuist/pull/726 by @pepibumur.
- Support for paths relative to root https://github.com/tuist/tuist/pull/727 by @pepibumur.
TestableTargetis a description of target that adds to the
TestAction, you can specify execution tests parallelizable, random execution order or skip tests https://github.com/tuist/tuist/pull/728 by @rowwingman.
- Galaxy manifest model https://github.com/tuist/tuist/pull/729 by @pepibumur.
- Make scheme generation methods more generic https://github.com/tuist/tuist/pull/730 by @adamkhazi @kwridan.
- Workspace Schemes https://github.com/tuist/tuist/pull/752 by @adamkhazi @kwridan.
SimulatorControllerwith method to fetch the runtimes https://github.com/tuist/tuist/pull/746 by @pepibumur.
- Add RxSwift as a dependency of
TuistKithttps://github.com/tuist/tuist/pull/760 by @pepibumur.
- Add cache command https://github.com/tuist/tuist/pull/762 by @pepibumur.
- Utility to build xcframeworks https://github.com/tuist/tuist/pull/759 by @pepibumur.
CacheStoragingprotocol and a implementation for a local cache https://github.com/tuist/tuist/pull/763 by @pepibumur.
- Add support for changing the cache and versions directory using environment variables https://github.com/tuist/tuist/pull/765 by @pepibumur.
- Reactive interface to the System utility https://github.com/tuist/tuist/pull/770 by @pepibumur
- Workflow to make sure that documentation and website build https://github.com/tuist/tuist/pull/783 by @pepibumur.
- Support for
xcframeworkhttps://github.com/tuist/tuist/pull/769 by @lakpa
- Support generating info.plist for Watch Apps & Extensions https://github.com/tuist/tuist/pull/756 by @kwridan
- Ensure custom search path settings are included in generated projects https://github.com/tuist/tuist/pull/751 by @kwridan
- Remove duplicate HEADER_SEARCH_PATHS https://github.com/tuist/tuist/pull/787 by @kwridan
- Fix unstable scheme generation https://github.com/tuist/tuist/pull/790 by @marciniwanicki
- Add defaultConfigurationName to generated projects https://github.com/tuist/tuist/pull/793 by @kwridan
- Add knownRegions to generated projects https://github.com/tuist/tuist/pull/792 by @kwridan