Files and environment
Where sochi keeps its state and build output, its environment variables, and what it reads and writes.
Environment variables
Section titled “Environment variables”| Variable | Effect |
|---|---|
SOCHI_TEAM |
Default for --team on run and build. A team ID or name. |
NO_COLOR |
Turn off colours and the live status line. Both are also off when stderr isn’t a terminal. |
The install script also reads SOCHI_VERSION, SOCHI_INSTALL and SOCHI_NO_MODIFY_PATH. See Install.
Remembered choices
Section titled “Remembered choices”~/Library/Application Support/dev.sochi/
| Path | Contains |
|---|---|
projects/<Name>-<hash>/state.json |
The scheme and team you used, and what was last installed on each device. |
projects/<Name>-<hash>/packages-synced.toml |
What sochi.toml and the project agreed on at the last package sync. Used to tell which side changed. |
defaults.json |
The organization identifier from sochi new --org. |
Each project gets its own folder, named after the project with a hash of its path. Nothing here goes into your repository. Build settings are never stored, only choices.
Build output
Section titled “Build output”~/Library/Caches/dev.sochi/
| Path | Contains |
|---|---|
projects/<Name>-<hash>/DerivedData |
sochi’s build output, separate from Xcode’s. Package checkouts are in SourcePackages inside it. |
entitlement-docs/ |
Apple’s entitlement documentation, cached when sochi looks up how to write a capability. |
You can delete this folder at any time. The next build starts from scratch. sochi doctor prints its path.
What sochi changes in your project
Section titled “What sochi changes in your project”project.pbxproj, edited in place in Xcode’s own layout. sochi never re-serializes the whole file, so diffs stay small..entitlementsfiles.Info.plist, for Background Modes.sochi.toml.Package.resolved, throughxcodebuild.
While working, sochi may briefly create .sochi-package-*.xcodeproj or .sochi-migrate-*.xcodeproj next to your project. It always deletes them.
What sochi reads but never writes
Section titled “What sochi reads but never writes”- Your Xcode accounts and teams, from Xcode’s preferences.
- The capability catalog Xcode downloads for your team, in
~/Library/Developer/Xcode/UserData/Capabilities. - Your own templates in
~/Library/Developer/Xcode/Templatesand yourIDETemplateMacros.plist. - Inside the selected Xcode: its templates, capability catalog, entitlement and Info.plist schemas, and product type definitions.
Network
Section titled “Network”sochi itself goes online only to:
- list a repository’s tags when you add a package without a version rule
- resolve packages
- fetch Apple’s entitlement documentation, with a short timeout and fine to skip offline
Signing and provisioning go through xcodebuild, as they do in Xcode.