Log in
product

Tuist 0.11.0 has been released

Tuist 0.11.0 is out and it includes features like "tuist up" that help users configure their environment before working with the projects, or support for generating target schemes. This version also adds support for defining environment variables for targets, as well as some minor improvements and fixes.

Today I'd like to announce a new version of Tuist, 0.11.0. It's been a while without releasing Tuist versions but we are getting back to speed and getting great contributions from the community (more on this later). Although Tuist 0.11.0 was not baked with major features, it comes with a handful list of improvements and fixes, some of which I'd like to briefly touch on this announcement blog post.

Setup.swift

In the previous version we introduced a new API for projects to define the tasks that'd need to be executed to configure the local environment for the project. In the effort of making Tuist's core more reusable for external projects (you can read more about it here, Kassem and Marcin extracted the definition of those tasks into another manifest file, Setup.swift. From now this version, the tasks will be defined in that file following the following syntax:

let setup = Setup([ .homebrew(packages: ["swiftlint"]) ])

We made an exception here and introduced a breaking change in a minor release because this release wasn't a significant milestone for the project to justify a major release.

Generation of target schemes

Before this change, Tuist did not generate any schemes for the project targets. The ones listed in the project were generated automatically by Xcode. From this version, Tuist generates an scheme per target. Those schemes are not configurable yet, but is something that we might evaluate and potentially support. You can check out this and this proposal to follow the discussion.

Target environment variables

Targets support a new attribute, environment. When passed, Tuist sets those environment variables in the scheme asociated to the target:

let target = Target(environment: ["foo": "bar"])

Minor bug fixes

  • Verify bundle identifiers: Have you tried to use emojis 🥘 in a bundle identifier? You might have probably noticed that Xcode is not happy about it, nor we are. Before Xcode spits out an error we implemented a validation that fails the command if we detect invalid characters in your bundle identifier.
  • Init in non-empty directories: Before this fix, trying to initialize a project in a directory that already contains other files might have resulted in an error. We've changed that so that the command hesitates to run if there are files in the directory.

Deprecations

A few versions back, we added support for manifests defined in a JSON and Yaml. Unfortunately, we've decided not to give support for them anymore. Those formats have been marked as deprecated. You can continue using them but we encourage you to use default Swift format before the next version comes out.

What's coming?

Brace yourself because the next version of Tuist will will be an important milestone for the project:

  • Proper support for static libraries: If you work on an Xcode project with several frameworks and libraries you might have noticed how painful and cumbersome it is to maintain such a setup. Did you ever tried to move from dynamic to static or the other way around? Not easy right? The good news is that Oliver felt the pain as well and devised Tuist's support for transitive static dependencies. It'll even allow you to use assets with static libraries. You can follow up the work here.
  • Reusable core libraries: Kassem and Marcin would like to leverage and extend the powerful core of Tuist and are currently working on making all the logic for generating projects reusable and flexible. You'll be able to import Tuist's generation library and use it as you want.
  • Build command: One of the goals that I had in mind when I undertook to build Tuist was providing a set of commands that are common when working on Xcode projects. One of those commands is build. I imagined myself entering a directory with an Xcode project and being able to type tuist build with no flags at all. Well, that's becoming real and it'll likely be in the next version of Tuist. Furthermore, I'm building a xcodebuild parser that among others, it'll allow formatting the output from xcodebuild like the so popular xcpretty.

As always, you can easily update the version by just running the following command:

tuist update

Happy xcoding 📝!

Unlock your iOS team's full potential

Chat with the founders

You might also like

Interview with Søren Gregersen - Anyone in the team can create and maintain Xcode projects easily
In this interview we talk with Søren Gregersen, co-founder of Emplate, a digital studio based in Denmark. Søren shared with us how they use Tuist and the project description helpers for one of their main projects, a white label app for shopping malls in Europe.
Building a business around Tuist
Our lessons building a dev tools business: community focus, human-centered marketing, technological pragmatism, and creating sustainable innovation.
Interview with Donal O'Brien - We measure developer build times so that we can measure improvements and regressions
In this interview, we talk with Donal O'Brien from the core clients team at SoundCloud. He shares how they leveraged modularization, Tuist, and tools like Sourcery to overcome the challenges they faced while scaling the app. Moreover, he touches on some present challenges like developer awareness and the maintenance of the tools around the project.