Making Xcode projects and Swift packages first-class citizens in Xcode

You heard that right. While we’ll continue to invest in Tuist projects, we want to bring some of our features, like previews and insights, to Xcode projects and Swift packages. As part of that effort, we’ll have to make some changes throughout Tuist (e.g., documentation, APIs, commands). In this thread I’ll be sharing updates that we are making on various fronts to execute on that vision.

I opened a PR adjusting the interface of the configuration file. First of all, I’m renaming Config to Tuist, to align with the new manifest file, Tuist.swift, and I’m nesting all the options that are currently specific to Xcode projects under Tuist.project. The new schema will look like this:

Tuist Project

let tuist = Tuist(project: .tuist(/.../)

Swift Packages and Xcode projects

let tuist = Tuist(project: .xcode)
let tuist = Tuist(project: .package)

The documentation and the initialization template have been updated to reflect this. Up next is iterating in our init command to have two possible funnels:

  • You create a new Tuist project
  • You integrate with an Xcode project or workspace existing in the current directory.

I’ll update this thread with more news :slight_smile:

2 Likes