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.
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 👏.
We’re really grateful for all the community contributions to improving Tuist!
The latest update can be obtained via running:
The full changelog can be viewed on the 0.13.0 release page. Here are some highlights.
Setup.swift manifest now supports brew tap!
import ProjectDescription let setup = Setup([ .homebrewTap(repositories: ["peripheryapp/periphery"]) ])
tuist up will ensure the tap is added to Homebrew.
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!
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") ] )
Tuist now automatically sets the host & target application for test targets that declare they depend on applications.
For example take the following
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.
#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.
Happy Xcoding 🛠!
Tuist has become a vital part of organizations' development workflows, resulting in a rise in support and feature requests. Our current model of relying on volunteers' free time is unsustainable, and we are seeking funding to enable dedicated full-time contributions. Your sponsorship would be highly appreciated, as it will help us enhance Tuist and ensure its continued awesomeness.Sponsor Tuist