Tuist v3.0.0 Release Notes
-
๐ Changed
- ๐ฅ Breaking Tuist plugins 2.0 #3492 by @fortmarek
- ๐ฅ Breaking
tuist generate
automatically opens the generated project. #3912 by @danyf90:- Motivation:: Most of the times you want to open the project after generating it.
- Migration: If you need to generate the project without opening it, just pass
--no-open
totuist generate
.
- ๐ฅ Breaking add
type
parameter toTargetDependency.sdk
#3961 by @danyf90- Migration: Add the
type
parameter where definingsdk
target dependencies and remove both the extension and thelib
prefix from the name
- Migration: Add the
- ๐ฅ Breaking move
disableBundleAccessors
anddisableSynthesizedResourceAccessors
fromConfig.swift
toProject.ProjectOption
#3963 by @danyf90.- Motivation: Being able to define the option at the project level
- Migration: Move the
disableBundleAccessors
anddisableSynthesizedResourceAccessors
fromConfig.swift
toProject.ProjectOption
- ๐ฅ Breaking replace
SourceFileGlob
initializer with static.glob
method #3960 by @danyf90- Migration: Use the
.glob
method instead of the initializer
- Migration: Use the
- ๐ฅ Breaking minimum Xcode version and macOS version are Xcode 13.0 and macOS 12.0 #4030 by @adellibovi
- Motivation: Old versions usage is less then 5%.
- ๐ฅ Breaking
TargetScript.Script
cases.tool(_ path: String, _ args: [String])
and.scriptPath(_ path: Path, args: [String])
are now.tool(path: String, args: [String])
and.scriptPath(path: Path, args: [String])
#4030 by @adellibovi- Motivation: It enabled to get rid of custom Codable conformance.
- ๐ฅ Breaking the used tuist version and the manifests compilation times are no longer printed at default log level. Use the
--verbose
flag to print them. #4052 by @danyf90 - ๐ฅ Breaking rename
*-Project*
autogenerated schemes to*-Workspace*
#4089 by @danyf90- Motivation: The schemes are referred to the whole workspace, not to a specific project
- Migration: Use the
*-Workspace*
scheme instead
- ๐ฅ Breaking move
Config.GenerationOptions.autogeneratedSchemes
andConfig.GenerationOptions.enableCodeCoverage
options toWorkspace.GenerationOption.autogeneratedWorkspaceSchemes
- Motivation: They control workspace level options, so they are better suited in the workspace manifest
- ๐ฅ Breaking change automatic schemes generation to use
ProjectOption.AutomaticSchemesGrouping.byName
grouping- Motivation: Generated schemes now groups targets together better, reducing the number of generated schemes
- Migration: If the new default don't fit your needs, manually generate your schemes or try another
ProjectOption.AutomaticSchemesGrouping
option
- ๐ฅ Breaking refactor
Project.options
to be astruct
instead of anenum
#4104 by @danyf90- Motivation: A struct better represents the semantic of the type
- ๐ฅ Breaking refactor
Config.generationOptions
to be astruct
instead of anenum
#4109 by @danyf90- Motivation: A struct better represents the semantic of the type
- ๐ฅ Breaking remove
xcodeProjectName
,organizationName
, anddevelopmentRegion
fromConfig.GenerationOptions
#4131 by @danyf90- Migration: Configure them in
Project
instead or define helpers to share the value across projects
- Migration: Configure them in
- ๐ฅ Breaking move
Config.GenerationOptions.disableShowEnvironmentVarsInScriptPhases
toProject.Options
#4131 by @danyf90- Motivation: It is related to the project generation
- Migration: Configure it in
Project.Options
instead
- ๐ฅ Breaking move
Config.GenerationOptions.lastXcodeUpgradeCheck
toWorkspace.GenerationOptions
#4131 by @danyf90- Motivation: It is related to the workspace generation
- Migration: Configure it in
Worksapace.GenerrationOptions
instead
- โ Add support for configuring code coverage and testing options at the project level #4090 by @danyf90
- โ Add more detailed messaging for errors during manifest loading #4076 by @luispadron
- ๐ฆ Deprecate legacy SPM support via Project.packages #4112 by @danyf90
- ๐ Improve performance of
tuist generate
when cache is used #4146 by @adellibovi
โ Removed
- ๐ฅ Breaking remove
focus
command and merge its functionality insidegenerate
. #3912 by @danyf90:- Motivation:: The command were sharing a lot of responsibilities, and having a single one provides a cleaner CLI.
- Migration: Instead of using focus, just use
generate
passing the targets to it. If you want to avoid using caching, you can pass--no-cache
totuist generate
.
- ๐ฅ Breaking remove the
tuist lint code
command #4001 by @laxmorek- Migration: Use the swiftlint plugin instead. Read more about plugins here.
- ๐ฅ Breaking remove the
tuist lint project
command #4001 by @laxmorek- Motivation:
tuist
manifests/graphs are linted during generation (thetusit generate
command), no need to keep it separately.
- Motivation:
- ๐ฅ Breaking remove deprecated initializers for
FileLists
,Headers
, andHTTPURLResponse
#3936 by @danyf90- Migration: Use non deprecated initializers
๐ Fixed
- ๐ Fix dependencies not fetching using Swift Package Manager 5.6 #4078 by mikchmie
- ๐ Fix clean
tuist test
for project with resources #4091 by @adellibovi - ๐ Fix
tuist graph --skip-external-dependencies
forDependencies.swift
dependencies #4115 by @danyf90 & #4124 by @laxmorek - ๐ Fix
envversion
command not printing the tuist env version #4126 by @takinwande - ๐ Fix warning when importing
ProjectDescription
duringtuist edit
. It was caused by.swiftsourceinfo
files being added to the release artifact #4132 by @luispadron - โ Remove default MacCatalyst support when framework deployment target is set to iOS and/or iPad #4134 by @TheInkedEngineer
- ๐ Fix loading of external dependencies in nested projects #4157 by @alexanderwe
โ Added
- โ Add support for
umbrellaHeader
parameter toHeaders
to get list of public headers automatically. Also added new static functions inHeaders
for most popular cases with umbrella header #3884 by @pavel-trafimuk - โ Add
isExternal
property toProjectAutomation.Project
andTuistGraph.Project
that indicates whether a project is imported throughDependencies.swift
. #4155 by @laxmorek - Add
swiftOptimizeObjectLifetimes(_ enabled:)
to SettingsDictionary extension to setSWIFT_OPTIMIZE_OBJECT_LIFETIME
in Build Settings. #4171 by @kyungpyoda