diff --git a/Templates/Project+Templates.stencil b/Templates/Project+Templates.stencil index 59538ce50..01b4ec00d 100644 --- a/Templates/Project+Templates.stencil +++ b/Templates/Project+Templates.stencil @@ -3,7 +3,7 @@ import ProjectDescription /// Project helpers are functions that simplify the way you define your project. /// Share code to create targets, settings, dependencies, /// Create your own conventions, e.g: a func that makes sure all shared targets are "static frameworks" -/// See https://docs.tuist.io/features/helpers/ +/// See https://docs.tuist.io/guides/helpers/ extension Project { /// Helper function to create the Project for this ExampleApp diff --git a/projects/docs/docs/building-at-scale/best-practices.md b/projects/docs/docs/building-at-scale/best-practices.md index d4a8004c7..635c5daf4 100644 --- a/projects/docs/docs/building-at-scale/best-practices.md +++ b/projects/docs/docs/building-at-scale/best-practices.md @@ -15,7 +15,7 @@ This document contains a list of recommendations for conventions that we'd follo ### Dependencies -- **Explicit definition:** Dependencies can be defined implicitly through build settings. Xcode is smart enough to detect them and determine the order in which targets should be built. Although implicitness might work fine in small projects, as they get larger, it might turn into a source of issues and slowness. Default to explicit definition of dependencies using the [dependencies API](/features/dependencies/) that Tuist provides. Tuist has handy built-in features such as [tuist graph](/commands/graph/) or detection of circular dependencies that rely on dependencies being explicitly defined. +- **Explicit definition:** Dependencies can be defined implicitly through build settings. Xcode is smart enough to detect them and determine the order in which targets should be built. Although implicitness might work fine in small projects, as they get larger, it might turn into a source of issues and slowness. Default to explicit definition of dependencies using the [dependencies API](/guides/dependencies/) that Tuist provides. Tuist has handy built-in features such as [tuist graph](/commands/graph/) or detection of circular dependencies that rely on dependencies being explicitly defined. - **XCTest dependency:** If a target that is not a test target depends on `XCTest`, declare the dependency explicitly with `.xctest`. - **Avoid re-exported modules:** If a target A, re-exports a dependency B using the syntax `@_exported`, to a target C, B should be a dependency of C. Dependencies defined through [re-exports](https://github.com/apple/swift/blob/main/docs/Modules.rst#modules-can-re-export-other-modules) create implicit dependencies that complicate [caching](/building-at-scale/caching/). If that setup is not possible becase it leads to duplicated symbols, you might consider wrapping the transitive static dependency into a dynamic target. diff --git a/projects/docs/docs/building-at-scale/microfeatures.md b/projects/docs/docs/building-at-scale/microfeatures.md index d52f07b58..3104cbf47 100644 --- a/projects/docs/docs/building-at-scale/microfeatures.md +++ b/projects/docs/docs/building-at-scale/microfeatures.md @@ -247,7 +247,7 @@ the decision process has been notably simplified. Since Tuist supports defining resources in libraries, we recommend sticking to **static libraries**, unless you come across scenarios where a dynamic framework is more suitable. -Bear in mind that Tuist makes changing the product a seamless process as long as you use the [standard interface](/features/resources/) for accessing resources. +Bear in mind that Tuist makes changing the product a seamless process as long as you use the [standard interface](/guides/resources/) for accessing resources. ### Frequently asked questions diff --git a/projects/docs/docs/commands/edit.md b/projects/docs/docs/commands/edit.md index 76bf71c19..5724db23a 100644 --- a/projects/docs/docs/commands/edit.md +++ b/projects/docs/docs/commands/edit.md @@ -7,7 +7,7 @@ description: 'Learn how to edit your manifest files using Xcode and get document ### Context One of the advantages of defining your projects in [Swift](https://swift.org/) is that we can leverage Xcode and the Swift compiler to safely edit the projects with syntax auto-completion and documentation. -Tuist provides a command, `tuist edit`, which generates and opens a temporary Xcode project that includes all the manifest files in the current directory, and the files the manifests depend on _(e.g. [project description helpers](/features/helpers/))_. +Tuist provides a command, `tuist edit`, which generates and opens a temporary Xcode project that includes all the manifest files in the current directory, and the files the manifests depend on _(e.g. [project description helpers](/guides/helpers/))_. ### Command diff --git a/projects/docs/docs/commands/scaffold.md b/projects/docs/docs/commands/scaffold.md index 5fc126215..0d1d7b6da 100644 --- a/projects/docs/docs/commands/scaffold.md +++ b/projects/docs/docs/commands/scaffold.md @@ -54,4 +54,4 @@ Since platform is an optional argument, we can also call the command without the If `.string` and `.files` don't provide enough flexibility, you can leverage the [Stencil](https://github.com/stencilproject/Stencil) templating language via the `.file` case. Besides that, you can also use additional filters defined [here](https://github.com/SwiftGen/StencilSwiftKit#filters) -Templates can import [project description helpers](/features/helpers/). Just add `import ProjectDescriptionHelpers` at the top, and extract reusable logic into the helpers. +Templates can import [project description helpers](/guides/helpers/). Just add `import ProjectDescriptionHelpers` at the top, and extract reusable logic into the helpers. diff --git a/projects/docs/docs/features/dependencies.md b/projects/docs/docs/guides/dependencies.md similarity index 98% rename from projects/docs/docs/features/dependencies.md rename to projects/docs/docs/guides/dependencies.md index ca9e0f52f..5b3999f0f 100644 --- a/projects/docs/docs/features/dependencies.md +++ b/projects/docs/docs/guides/dependencies.md @@ -1,6 +1,6 @@ --- -title: Dependencies -slug: '/features/dependencies' +title: Defining dependencies +slug: '/guides/dependencies' description: Defining dependencies between modules is a straightforward task in Tuist. This document describes how to use this feature, and all types of dependencies that targets can define. --- diff --git a/projects/docs/docs/features/environment.md b/projects/docs/docs/guides/environment.md similarity index 96% rename from projects/docs/docs/features/environment.md rename to projects/docs/docs/guides/environment.md index 7e78f0b19..3768492d7 100644 --- a/projects/docs/docs/features/environment.md +++ b/projects/docs/docs/guides/environment.md @@ -1,6 +1,6 @@ --- -title: Environment -slug: '/features/environment' +title: Generation-time configuration +slug: '/guides/environment' description: Learn how to leverage environment variables that can be read from the manifest files. --- diff --git a/projects/docs/docs/features/helpers.md b/projects/docs/docs/guides/helpers.md similarity index 97% rename from projects/docs/docs/features/helpers.md rename to projects/docs/docs/guides/helpers.md index 4d8be8de8..bc03a2470 100644 --- a/projects/docs/docs/features/helpers.md +++ b/projects/docs/docs/guides/helpers.md @@ -1,6 +1,6 @@ --- -title: Manifest code-sharing -migrated_path: '/features/helpers' +title: Sharing code across manifests +migrated_path: '/guides/helpers' description: Project description helpers are a group of Swift files that can be accessed from any project manifest. They are useful to extract common patterns, define project conventions, or simplify the definition of projects. --- diff --git a/projects/docs/docs/features/resources.md b/projects/docs/docs/guides/resources.md similarity index 99% rename from projects/docs/docs/features/resources.md rename to projects/docs/docs/guides/resources.md index 047227c8d..67fbda886 100644 --- a/projects/docs/docs/features/resources.md +++ b/projects/docs/docs/guides/resources.md @@ -1,6 +1,6 @@ --- title: Accessing resources -slug: '/features/resources' +slug: '/guides/resources' description: 'In this page documents how Tuist synthesizes accessors for resources to provide an interface that is consistent across all target products (e.g. framework. library).' --- diff --git a/projects/docs/docs/features/shell-autocompletion.md b/projects/docs/docs/guides/shell-autocompletion.md similarity index 96% rename from projects/docs/docs/features/shell-autocompletion.md rename to projects/docs/docs/guides/shell-autocompletion.md index 8409378d4..67922237d 100644 --- a/projects/docs/docs/features/shell-autocompletion.md +++ b/projects/docs/docs/guides/shell-autocompletion.md @@ -1,6 +1,6 @@ --- -title: Shell autocompletion -slug: '/features/shell-autocompletion' +title: Setting up your shell +slug: '/guides/shell-autocompletion' description: 'To ease usage of tuist, learn how you can generate autocompletions for your shell' --- diff --git a/projects/docs/docs/features/stats.md b/projects/docs/docs/guides/stats.md similarity index 92% rename from projects/docs/docs/features/stats.md rename to projects/docs/docs/guides/stats.md index af53bf678..83a717104 100644 --- a/projects/docs/docs/features/stats.md +++ b/projects/docs/docs/guides/stats.md @@ -1,9 +1,11 @@ --- -title: Statistics -slug: '/features/stats' +title: Helping Tuist +slug: '/guides/stats' description: Learn about Tuist Stats --- +### Sending usage statistics + Tuist sends some **anonymous** analytics events to track the usage of the tool. Having statistics about Tuist's usage helps contributors to make informed decision and better prioritize future work. For example, if a command is only used by 1% of the users, it might not get prioritized for enhancements in the future. diff --git a/projects/docs/docs/features/version-management.md b/projects/docs/docs/guides/version-management.md similarity index 98% rename from projects/docs/docs/features/version-management.md rename to projects/docs/docs/guides/version-management.md index e6f1a581f..aed3b5802 100644 --- a/projects/docs/docs/features/version-management.md +++ b/projects/docs/docs/guides/version-management.md @@ -1,6 +1,6 @@ --- -title: Version management -slug: '/features/version-management' +title: Managing Tuist versions +slug: '/guides/version-management' description: Tuist comes with its own version management that is deterministic and ensures that everyone in the team uses the same version of Tuist. This document explains how to use it, and what are the commands available to pin projects or the environment to specific versions of Tuist. --- diff --git a/projects/docs/docs/manifests/project.md b/projects/docs/docs/manifests/project.md index f967ae812..40402a8e6 100644 --- a/projects/docs/docs/manifests/project.md +++ b/projects/docs/docs/manifests/project.md @@ -97,7 +97,7 @@ For local: .package(path: "MyLibrary") ``` -Targets can then depend on products from these Swift Packages. See [Dependencies](/features/dependencies) +Targets can then depend on products from these Swift Packages. See [Dependencies](/guides/dependencies) :::note Package.resolved Tuist creates a `.package.resolved` file, so your team can share the same versions of dependencies without committing your workspace. @@ -121,7 +121,7 @@ Each target in the list of project targets can be initialized with the following | `headers` | The target headers. | [`Headers`](#headers) | No | | | `entitlements` | Path to the entitlement file. | [`Path`](#path) | No | | | `actions` | Target actions allow defining extra script build phases. | [`[TargetAction]`](#target-action) | No | `[]` | -| `dependencies` | List of target dependencies. | [`[TargetDependency]` ](/features/dependencies) | No | `[]` | +| `dependencies` | List of target dependencies. | [`[TargetDependency]` ](/guides/dependencies) | No | `[]` | | `sources` | Source files that are compiled by the target. Any playgrounds matched by the globs used in this property will be automatically added. | [`SourceFilesList`](#source-file-list) | Yes | | | `settings` | Target build settings and configuration files. | [`Settings`](#settings) | No | | | `coreDataModels` | Core Data models. | [`[CoreDataModel]`](#core-data-model) | No | | diff --git a/projects/docs/docs/tutorial/adoption-guidelines.md b/projects/docs/docs/tutorial/adoption-guidelines.md index 48903eb7a..6adcd6f49 100644 --- a/projects/docs/docs/tutorial/adoption-guidelines.md +++ b/projects/docs/docs/tutorial/adoption-guidelines.md @@ -84,7 +84,7 @@ and lets developers know that they should change the manifest files instead. You can use a tool like [xcdiff](https://github.com/bloomberg/xcdiff) for that. -#### Use [project description helpers](/features/helpers/) +#### Use [project description helpers](/guides/helpers/) They allow defining your own abstractions for defining your projects, and most importantly, diff --git a/projects/docs/sidebars.js b/projects/docs/sidebars.js index cf563b5dd..efcedfd1f 100644 --- a/projects/docs/sidebars.js +++ b/projects/docs/sidebars.js @@ -11,15 +11,36 @@ module.exports = { }, { type: 'category', - label: 'Features', + label: 'Guides', items: [ - 'features/dependencies', - 'features/helpers', - 'features/resources', - 'features/environment', - 'features/version-management', - 'features/shell-autocompletion', - 'features/stats', + 'guides/dependencies', + 'guides/helpers', + 'guides/resources', + 'guides/environment', + 'guides/version-management', + 'guides/shell-autocompletion', + 'guides/stats', + ], + }, + { + type: 'category', + label: 'Commands', + items: [ + 'commands/edit', + 'commands/generate', + 'commands/focus', + 'commands/signing', + 'commands/build', + 'commands/test', + 'commands/scaffold', + 'commands/linting', + 'commands/graph', + 'commands/up', + 'commands/migration', + 'commands/documentation', + 'commands/secrets', + 'commands/clean', + 'commands/dependencies', ], }, { @@ -50,27 +71,6 @@ module.exports = { 'building-at-scale/best-practices', ], }, - { - type: 'category', - label: 'Commands', - items: [ - 'commands/edit', - 'commands/generate', - 'commands/focus', - 'commands/signing', - 'commands/build', - 'commands/test', - 'commands/scaffold', - 'commands/linting', - 'commands/graph', - 'commands/up', - 'commands/migration', - 'commands/documentation', - 'commands/secrets', - 'commands/clean', - 'commands/dependencies', - ], - }, { type: 'category', label: 'Contributors', diff --git a/projects/website/markdown/apps-at-scale/2020-06-28-soren/post.mdx b/projects/website/markdown/apps-at-scale/2020-06-28-soren/post.mdx index 20d7df92f..3d945ac5d 100644 --- a/projects/website/markdown/apps-at-scale/2020-06-28-soren/post.mdx +++ b/projects/website/markdown/apps-at-scale/2020-06-28-soren/post.mdx @@ -93,7 +93,7 @@ Apart from the setup of new apps it also turned out to be a big pain to maintain ### What’s the feature that you like the most from Tuist and why? -There are so many nice features in Tuist already but I think the [project description helpers](https://docs.tuist.io/features/helpers/) are my favorite. It allows us to generalize and reuse the way an app or framework is configured. +There are so many nice features in Tuist already but I think the [project description helpers](https://docs.tuist.io/guides/helpers/) are my favorite. It allows us to generalize and reuse the way an app or framework is configured. ### Do you use project description helpers? If so, how? Would you mind adding a code snippet that illustrates your usage. diff --git a/projects/website/markdown/docs/commands/autocompletion.mdx b/projects/website/markdown/docs/commands/autocompletion.mdx index 1429fd1cb..f5420189a 100644 --- a/projects/website/markdown/docs/commands/autocompletion.mdx +++ b/projects/website/markdown/docs/commands/autocompletion.mdx @@ -1,5 +1,5 @@ --- name: Autocompletions -migrated_path: '/features/shell-autocompletion' +migrated_path: '/guides/shell-autocompletion' excerpt: '' --- diff --git a/projects/website/markdown/docs/dependencies/local.mdx b/projects/website/markdown/docs/dependencies/local.mdx index e18a883e6..de6d9ad8d 100644 --- a/projects/website/markdown/docs/dependencies/local.mdx +++ b/projects/website/markdown/docs/dependencies/local.mdx @@ -1,5 +1,5 @@ --- name: Local dependencies -migrated_path: '/features/dependencies' +migrated_path: '/guides/dependencies' exceprt: '' --- diff --git a/projects/website/markdown/docs/usage/dynamic-configuration.mdx b/projects/website/markdown/docs/usage/dynamic-configuration.mdx index 7fa0399ec..45dadb1dc 100644 --- a/projects/website/markdown/docs/usage/dynamic-configuration.mdx +++ b/projects/website/markdown/docs/usage/dynamic-configuration.mdx @@ -1,5 +1,5 @@ --- name: Dynamic configuration -migrated_path: '/features/environment' +migrated_path: '/guides/environment' excerpt: '' --- diff --git a/projects/website/markdown/docs/usage/helpers.mdx b/projects/website/markdown/docs/usage/helpers.mdx index 3fa49555f..56a28629c 100644 --- a/projects/website/markdown/docs/usage/helpers.mdx +++ b/projects/website/markdown/docs/usage/helpers.mdx @@ -1,5 +1,5 @@ --- name: Project description helpers -migrated_path: '/features/helpers' +migrated_path: '/guides/helpers' excerpt: '' --- diff --git a/projects/website/markdown/docs/usage/managing-versions.mdx b/projects/website/markdown/docs/usage/managing-versions.mdx index 1ae5bad3c..be3467051 100644 --- a/projects/website/markdown/docs/usage/managing-versions.mdx +++ b/projects/website/markdown/docs/usage/managing-versions.mdx @@ -1,5 +1,5 @@ --- name: Managing versions -migrated_path: '/features/version-management' +migrated_path: '/guides/version-management' excerpt: '' --- diff --git a/projects/website/markdown/docs/usage/resources.mdx b/projects/website/markdown/docs/usage/resources.mdx index 72ff8768d..a56a7b74f 100644 --- a/projects/website/markdown/docs/usage/resources.mdx +++ b/projects/website/markdown/docs/usage/resources.mdx @@ -1,5 +1,5 @@ --- name: Accessing resources -migrated_path: '/features/resources' +migrated_path: '/guides/resources' excerpt: '' --- diff --git a/projects/website/markdown/docs/usage/stats.mdx b/projects/website/markdown/docs/usage/stats.mdx index 3be00dbb1..570c4381f 100644 --- a/projects/website/markdown/docs/usage/stats.mdx +++ b/projects/website/markdown/docs/usage/stats.mdx @@ -1,5 +1,5 @@ --- name: Stats -migrated_path: '/features/stats' +migrated_path: '/guides/stats' exceprt: Learn about Tuist Stats --- diff --git a/projects/website/markdown/posts/2019-12-27-version-1.1.0/post.mdx b/projects/website/markdown/posts/2019-12-27-version-1.1.0/post.mdx index 5ccfdf643..1cb82b1ef 100644 --- a/projects/website/markdown/posts/2019-12-27-version-1.1.0/post.mdx +++ b/projects/website/markdown/posts/2019-12-27-version-1.1.0/post.mdx @@ -9,7 +9,7 @@ author: pepibumur Tuist 1.1.0 has been released and is shorter than usual because we have committed to a fixed biweekly. In the past, users were in situations where their projects were pointing to commits in main. -Although that's possible thanks to [Tuist's version management](https://docs.tuist.io/features/version-management/), that's an undesirable state to be in. +Although that's possible thanks to [Tuist's version management](https://docs.tuist.io/guides/version-management/), that's an undesirable state to be in. We chose two weeks as the cadence because a week is to short as to be able to ship noticeable changes, and more than two weeks likely leaves users waiting for improvements and bug fixes coming along with new versions. diff --git a/projects/website/markdown/posts/2020-04-21-version-1.7.1/post.mdx b/projects/website/markdown/posts/2020-04-21-version-1.7.1/post.mdx index 2bcb016a0..fa3e54741 100644 --- a/projects/website/markdown/posts/2020-04-21-version-1.7.1/post.mdx +++ b/projects/website/markdown/posts/2020-04-21-version-1.7.1/post.mdx @@ -34,7 +34,7 @@ let baseSettings: [String: SettingValue] = [ This is not ideal. Having to repeat the strings manually and finding the possible values is not only tedious, but also might lead to errors, since typos in strings are a common problem. Initially, I found myself using a few functions in -my [project description helpers](https://docs.tuist.io/features/helpers/) to make the settings both type safety and to reduce duplication +my [project description helpers](https://docs.tuist.io/guides/helpers/) to make the settings both type safety and to reduce duplication of the strings. I raised the topic in the Tuist Slack group and adding these functions to `ProjectDescription` was a welcome idea. This is exactly within the goals of Tuist: to make developers' life easier and the task of generating projects less error prone. From now on, the code above can be written like this: diff --git a/projects/website/markdown/posts/2020-04-28-why-tuist/post.mdx b/projects/website/markdown/posts/2020-04-28-why-tuist/post.mdx index 907739c63..78f3719b7 100644 --- a/projects/website/markdown/posts/2020-04-28-why-tuist/post.mdx +++ b/projects/website/markdown/posts/2020-04-28-why-tuist/post.mdx @@ -43,7 +43,7 @@ There are also build phases, targets, or schemes, for which Xcode doesn't provid Other teams resort to scripts that run some checks on the projects, but that results in a poor experience for developers because those checks are not built into their workflows. -Tuist solves this by providing [project description helpers](https://docs.tuist.io/features/helpers/). +Tuist solves this by providing [project description helpers](https://docs.tuist.io/guides/helpers/). All you need to do is to define what types of projects are supported, and codify them into functions that return templated projects: diff --git a/projects/website/markdown/posts/2020-05-26-dynamism/post.mdx b/projects/website/markdown/posts/2020-05-26-dynamism/post.mdx index bb742d7e4..4f562de59 100644 --- a/projects/website/markdown/posts/2020-05-26-dynamism/post.mdx +++ b/projects/website/markdown/posts/2020-05-26-dynamism/post.mdx @@ -33,7 +33,7 @@ At this point, you may wonder how Tuist relates to this dynamism I'm talking abo Here are some examples of things that we were able to provide by leveraging the dynamism of project generation: -- Having consistency across projects and targets by leveraging [project description helpers](https://docs.tuist.io/features/helpers/). +- Having consistency across projects and targets by leveraging [project description helpers](https://docs.tuist.io/guides/helpers/). - [Defining dependencies](/docs/dependencies/local/) explicitly with a simple and unified DSL. - [Setting up](/docs/commands/up/) the environment deterministically to ensure Xcode behaviors and builds are reproducible. - Throw errors early when projects have invalid configurations. diff --git a/projects/website/markdown/posts/2020-07-24-version-1.14.0/post.mdx b/projects/website/markdown/posts/2020-07-24-version-1.14.0/post.mdx index 2784c1e56..57b855d29 100644 --- a/projects/website/markdown/posts/2020-07-24-version-1.14.0/post.mdx +++ b/projects/website/markdown/posts/2020-07-24-version-1.14.0/post.mdx @@ -13,7 +13,7 @@ It's Friday, and that means time for a new Tuist release. With the aim of releas ### Disable SwiftLint in the generated source files -With the introduction of [synthesized accessors for resources](https://docs.tuist.io/features/resources/) some users reported that SwiftLint failed because it linted the generated files. We [fixed](https://github.com/tuist/tuist/pull/1574) it by adding annotations in the generated files to disable [SwiftLint](https://github.com/realm/SwiftLint) in them. +With the introduction of [synthesized accessors for resources](https://docs.tuist.io/guides/resources/) some users reported that SwiftLint failed because it linted the generated files. We [fixed](https://github.com/tuist/tuist/pull/1574) it by adding annotations in the generated files to disable [SwiftLint](https://github.com/realm/SwiftLint) in them. ### Fix the path resolution for synthesized resource accessors diff --git a/projects/website/markdown/posts/2020-09-16-version-1.18.0/post.mdx b/projects/website/markdown/posts/2020-09-16-version-1.18.0/post.mdx index f537a39cc..4f3f69f6d 100644 --- a/projects/website/markdown/posts/2020-09-16-version-1.18.0/post.mdx +++ b/projects/website/markdown/posts/2020-09-16-version-1.18.0/post.mdx @@ -36,7 +36,7 @@ One of the downsides of accessing resources using strings is that nothing preven We think it's a brilliant idea worth incorporating into Tuist, and that's what we did in this release. Tuist automatically generates a Swift interface for accessing the resources and adds it to the target automatically. Users don't have to install SwiftGen, ensure that their targets are well-configured, or add extra lanes into their `Fastfiles`. The generation of those interfaces happens seamlessly at project generation time. -You can check out [this documentation page](https://docs.tuist.io/features/resources/) to learn more about the feature. +You can check out [this documentation page](https://docs.tuist.io/guides/resources/) to learn more about the feature. ## Lint your Swift code diff --git a/projects/website/markdown/posts/2020-12-24-next-for-tuist/post.mdx b/projects/website/markdown/posts/2020-12-24-next-for-tuist/post.mdx index 65bbaf1a0..35b65a7a8 100644 --- a/projects/website/markdown/posts/2020-12-24-next-for-tuist/post.mdx +++ b/projects/website/markdown/posts/2020-12-24-next-for-tuist/post.mdx @@ -14,7 +14,7 @@ In this blog post, I'll unfold the areas we’ll focus on in 2021. With project generation, we gave teams a simple interface to describe their modular projects. By design, we chose [Swift](https://developer.apple.com/swift/) as the language for describing them. -It was a great idea because it allowed us to provide a great developer experience and features like [project description helpers](https://docs.tuist.io/features/helpers/). +It was a great idea because it allowed us to provide a great developer experience and features like [project description helpers](https://docs.tuist.io/guides/helpers/). As more projects adopted Tuist, we realized it’d also be useful for teams to extract Tuist-related files into a different repository to make them organization-wide resources.