Releases: jihoonme/tuistui
Releases · jihoonme/tuistui
TuistUI v0.2.2
What's Changed
- Update Project Template
Project.swift
import ProjectDescription
import ProjectDescriptionHelpers
import TuistUI
let project = {{ name }}().module()
Tuist/ProjectDescriptionHelpers/Projects/{{name}}.swift
import ProjectDescription
import TuistUI
public struct {{ name }}: Module {
var body: some Module {
Project {
....
}
}
}
- Update Workspace Template
Workspace.swift
import ProjectDescription
import ProjectDescriptionHelpers
import TuistUI
let workspace = {{ name }}().module()
Tuist/ProjectDescriptionHelpers/Workspace/{{name}}.swift
import ProjectDescription
import TuistUI
public struct {{ name }}: Module {
var body: some Module {
Workspace {
....
}
}
}
Project File and Workplace File are gathered in one place to facilitate quick modifications.
TuistUI v0.2.1
What's Changed
- Update
Configuration
protocol toXCConfig
. - Add
XCConfigDeployTarget
and ConfigurationName Type methods.
struct AppConfiguration: XCConfig {
enum XCConfigTarget: String, XCConfigTargetType {
case baseProject
var path: Path {
switch self {
case .baseProject:
return .relativeToRoot("XCConfig/baseProject")
}
}
}
var body: some XCConfigOf<Self> {
Configure ({
switch $0 {
case .baseProject:
return [
// Write Configuration Method
]
}
})
}
}
Set the Deploy Target part of XCConfig.
enum XCConfigDeployTarget: String, XCConfigDeployTargetType {
case dev = "DEV"
case stage = "STAGE"
case prod = "PROD"
}
And use .debug(into:deploy:)
method, .release(into:deploy:)
method extended to ConfigurationName and make it easier to use
var body: some XCConfigOf<Self> {
Configure ({
switch $0 {
case .A:
return [
.debug(into: $0, deploy: XCConfigDeployTarget.dev)
.release(into: $0, deploy: XCConfigDeployTarget.prod)
]
}
})
}
TuistUI v0.2.0
What's Changed
- Add
TargetModifier
for custom Target - Add Configuration Management Feature
struct AppConfiguration: Configuration {
enum ConfigurationTarget: String, ConfigurationType {
case baseProject
var path: Path {
switch self {
case .baseProject:
return .relativeToRoot("/baseProject/debug.xcconfig")
}
}
}
var body: some ConfigurationOf<Self> {
Configure ({
switch $0 {
case .baseProject:
return [
// Write Configuration Method
]
}
})
}
}
How to use within a module.
struct BaseProject: Module {
let config = AppConfiguration()
var body: Module {
Project {
// Target
}
.settings(
.settings(
configurations: config.configure(into: .baseProject)
)
)
}
}
TuistUI v0.1.7
- no changed
TuistUI v0.1.6
What's Changed
makeModule()
method changed tomodule()
method.
TuistUI v0.1.5
What's Changed
- TuistUI template is renamed to lowercase.
TuistUI v0.1.4
What's Changed
$ tuist scaffold $(templateName) --path $(path) --name $(name)
- Support Tuist Scaffold Template (Project or Workspace)
TuistUI v0.1.3
Whats Chaned
Environment
property wrapper ->ModuleEnvironment
Before
struct BaseProject: Module {
@TuistUI.Environment var env = AppEnvironment()
var body: Module {
Project {
// Target
}
.organizationName(env.organizationName)
}
}
After
struct BaseProject: Module {
@ModuleEnvironment var env = AppEnvironment()
var body: Module {
Project {
// Target
}
.organizationName(env.organizationName)
}
}
TuistUI v0.1.2
What's Changed
- Environment management
final class AppEnvironment: EnvironmentObject {
let organizationName: String = ""
let deploymentTarget: DeploymentTarget = .iOS(targetVersion: "15.0", devices: [.iphone, .ipad])
let platform: Platform = .iOS
}
How to use within a module.
struct BaseProject: Module {
@TuistUI.Environment var env = AppEnvironment()
var body: Module {
Project {
// Target
}
.organizationName(env.organizationName)
}
}
TuistUI v0.1.1
What's Changed
- Add Docc TuistUI
Document
. - Modifies where the module source code does not generate some module type
- Add EmptyModule Type