Overview
Thetuist edit command generates a temporary Xcode project that allows you to edit your Tuist manifest files (Project.swift, Workspace.swift, etc.) with full IDE support including syntax highlighting, autocomplete, and type checking.
Usage
Options
The path to the directory whose project will be edited.
Short form of
--path.Creates the project in the current directory or the one indicated by
-p and doesn’t block the process. By default, the project is temporary and the command blocks until you close Xcode.Short form of
--permanent.Only includes the manifest in the current directory. By default, manifests from parent directories and helpers are included.
Short form of
--only-current-directory.Examples
Edit manifests with Xcode
Edit in background
Edit only current directory
Edit from specific path
Permanent project in custom location
Features/Login directory.
How it works
When you runtuist edit, Tuist:
- Scans for manifests: Finds all relevant manifest files (
.swiftfiles in the project) - Includes helpers: Adds any
ProjectDescriptionHelpersmodules for autocomplete - Generates Xcode project: Creates a simple Xcode project structure
- Opens in Xcode: Launches Xcode with the generated project
- Waits (default): Blocks until you close Xcode, then cleans up temporary files
What’s included
The edit project includes:- All manifest files (
Project.swift,Workspace.swift,Tuist.swift, etc.) ProjectDescriptionHelpersmodules with custom extensions- Parent directory manifests (unless
--only-current-directoryis used) - The
ProjectDescriptionframework for autocomplete and type checking
Use cases
IDE support for manifests
Get full Xcode IDE features when editing manifest files:- Syntax highlighting
- Code completion
- Type checking
- Quick documentation
- Jump to definition
- Error highlighting
Working with helpers
Easily navigate and editProjectDescriptionHelpers:
Quick manifest fixes
When you need to make complex changes to manifests:Persistent edit project
Keep a permanent edit project alongside your code:Manifests.xcodeproj to your .gitignore if using this approach.