Skip to content

Releases: jihoonme/tuistui

TuistUI v0.2.2

21 Sep 06:21
38950e0
Compare
Choose a tag to compare

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

13 Jun 16:02
Compare
Choose a tag to compare

What's Changed

  • Update Configuration protocol to XCConfig.
  • 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

10 Jun 07:34
Compare
Choose a tag to compare

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

28 Jan 12:27
Compare
Choose a tag to compare
  • no changed

TuistUI v0.1.6

01 Jan 13:28
Compare
Choose a tag to compare

What's Changed

  • makeModule() method changed to module() method.

TuistUI v0.1.5

10 Dec 14:33
Compare
Choose a tag to compare

What's Changed

  • TuistUI template is renamed to lowercase.

TuistUI v0.1.4

10 Dec 09:25
Compare
Choose a tag to compare

What's Changed

$ tuist scaffold $(templateName) --path $(path) --name $(name)
  • Support Tuist Scaffold Template (Project or Workspace)

TuistUI v0.1.3

20 Nov 14:29
9a869a4
Compare
Choose a tag to compare

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

20 Nov 11:36
Compare
Choose a tag to compare

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

30 Oct 09:25
aac0c74
Compare
Choose a tag to compare

What's Changed

  • Add Docc TuistUI Document.
  • Modifies where the module source code does not generate some module type
  • Add EmptyModule Type