Log in
product

Workspace improvements with Tuist 0.13.0

The just baked new version of Tuist, 0.13.0, is already with us. We added significant improvements to workspaces like being able to define additional files that are added to the project. We also aligned the structured of the generated workspaces to match the filesystem. This version also makes sure that for those test targets that depend on a host application are set up with the right settings.

Tuist 0.13.0 has been released! 🎉

We’re taking turns releasing and writing about what’s new in the world of Tuist. I’m Kas and will be your host through this post on the latest developments.

Contributors

In this release Tuist gained a new contributor! @BalestraPatrick fixed a warning in newly generated projects #291. Additionally, @pepicrft and @ollieatkinson have been hard at work blitzing through numerous bug fixes and improvements 👏.

Contributions also come in the form of valuable feedback, a huge shout out to @enhorn for actively reporting issues and suggestions to enhance Tuist.

We’re really grateful for all the community contributions to improving Tuist!

What’s new?

The latest update can be obtained via running:

tuist update

The full changelog can be viewed on the 0.13.0 release page. Here are some highlights.

Homebrew tap support

The Setup.swift manifest now supports brew tap!

import ProjectDescription let setup = Setup([ .homebrewTap(repositories: ["peripheryapp/periphery"]) ])

Calling tuist up will ensure the tap is added to Homebrew.

Workspace Improvements

By default, calling tuist generate will create an Xcode workspace containing the current project and all its dependencies.

New in 0.13.0, the generated Xcode workspace structure reflects the file system!

Additionally, the Workspace.swift manifest has been enhanced to allow the inclusion of files and folder references that don’t necessarily belong to a particular project - your Documentation files can now be included!

import ProjectDescription let workspace = Workspace( name: "Workspace", projects: [ "App", "Frameworks/**", ], additionalFiles: [ "Documentation/**", .folderReference(path: "Website") ] )

<img class="posts__post-screenshot"

alt="Workspace with additional files and folder references" src="/marketing/images/blog/2019/04/03/workspace-improvements.png" />

Host application for unit & ui tests

Tuist now automatically sets the host & target application for test targets that declare they depend on applications.

For example take the following Project.swift manifest:

import ProjectDescription let project = Project( name: "App", targets: [ Target(name: "App", platform: .iOS, product: .app, bundleId: "io.tuist.App", infoPlist: "Info.plist", sources: "Sources/**" ), Target( name: "AppTests", platform: .iOS, product: .unitTests, bundleId: "io.tuist.AppTests", infoPlist: "Tests.plist", sources: "Tests/**", dependencies: [ .target(name: "App"), ] ), Target( name: "AppUITests", platform: .iOS, product: .uiTests, bundleId: "io.tuist.AppUITests", infoPlist: "Tests.plist", sources: "UITests/**", dependencies: [ .target(name: "App"), ] ) ] )

The generated project will have the host and target application set to App for the unit and ui test targets.

<img class="posts__post-screenshot"

alt="Unit tests target with host application" src="/marketing/images/blog/2019/04/03/unit-tests-host-application.png" />

<img class="posts__post-screenshot"

alt="UI tests target with target application" src="/marketing/images/blog/2019/04/03/ui-tests-target-application.png" />

What’s next?

  • #265 Storyboard enhancements - adding the ability to automatically generate the appropriate storyboard files via tuist init as well as explicitly specifying them within the Project.swift manifest to include in the generated Xcode project.

  • #160 Multiple configurations - a few different options are being explored, such as environments or possibly even includes to help reduce repeated definitions.

  • #316 Xcode 10.2 & Swift 5 support.

If you have any ideas or feedback on these items or any others, please feel free to reach out on GitHub or Slack!

Happy Xcoding 🛠!

Unlock your iOS team's full potential

Chat with the founders

You might also like

Open sourcing Noora for the web
We're open sourcing Noora for the web—a complete, accessible design system for Phoenix LiveView with Figma files and ready-to-use components.
Visualize your projects graph from Tuist 0.17.0
One of the difficulties of scaling up Xcode projects comes from the fact that Xcode doesn't provide a high-level picture of the structure of the project. Tuist 0.17.0 fixes that by providing a new command, 'tuist graph', that exports a graph of the project to help users of the tool visualize their project dependencies. This version also adds support for configuring Tuist globally, and also indicate the version of Xcode that is required to run the project.
Welcome Swift Packages to the dependencies family in Tuist 0.18.0
Making the definition of dependencies very convenient was one of our aims when we embarked on building Tuist and today, we are extending that convenience to external dependencies that are distributed as Swift Packages. Targets can now define packages as dependencies and Tuist will take care of the rest. Moreover, this version ships with improvements in the API of dynamic Info.plist files.