STRUCT
Project
​
Contents
- Properties
name
organizationName
classPrefix
options
packages
targets
schemes
settings
fileHeaderTemplate
additionalFiles
resourceSynthesizers
containsExternalDependencies
- Methods
init(name:organizationName:classPrefix:options:packages:settings:targets:schemes:fileHeaderTemplate:additionalFiles:resourceSynthesizers:)
public struct Project: Codable, Equatable, Sendable
A project representation.
A project manifest needs to be defined in a Project.swift
manifest file. Manifests need to import the framework ProjectDescription which contains all the classes and enums that are available for you to describe your projects.
The snippet below shows an example project manifest:
import ProjectDescription
let project = Project(
name: "MyProject",
organizationName: "MyOrg",
targets: [
Target(
name: "App",
destinations: .iOS,
product: .app,
bundleId: "io.tuist.App",
infoPlist: "Config/App-Info.plist",
sources: ["Sources/**"],
resources: [
"Resources/**",
.folderReference(path: "Stubs"),
.folderReference(path: "ODR", tags: ["odr_tag"])
],
headers: .headers(
public: ["Sources/public/A/**", "Sources/public/B/**"],
private: "Sources/private/**",
project: ["Sources/project/A/**", "Sources/project/B/**"]
),
dependencies: [
.project(target: "Framework1", path: "../Framework1"),
.project(target: "Framework2", path: "../Framework2")
]
)
],
schemes: [
Scheme(
name: "App-Debug",
shared: true,
buildAction: .buildAction(targets: ["App"]),
testAction: .targets(["AppTests"]),
runAction: .runAction(executable: "App")
),
Scheme(
name: "App-Release",
shared: true,
buildAction: .buildAction(targets: ["App"]),
runAction: .runAction(executable: "App")
)
],
additionalFiles: [
"Dangerfile.swift",
"Documentation/**",
.folderReference(path: "Website")
]
)
Properties ​
name
​
public let name: String
The name of the project. Also, the file name of the generated Xcode project.
organizationName
​
public let organizationName: String?
The name of the organization used by Xcode as copyright.
classPrefix
​
public let classPrefix: String?
The prefix for class files Xcode generates when you create a project or class file.
options
​
public let options: Options
The project options.
packages
​
public let packages: [Package]
The Swift Packages used by the project.
targets
​
public let targets: [Target]
The targets of the project.
schemes
​
public let schemes: [Scheme]
The custom schemes for the project. Default schemes for each target are generated by default.
settings
​
public let settings: Settings?
The build settings and configuration for the project.
fileHeaderTemplate
​
public let fileHeaderTemplate: FileHeaderTemplate?
The custom file header template for Xcode built-in file templates.
additionalFiles
​
public let additionalFiles: [FileElement]
The additional files for the project. For target's additional files, see Target/additionalFiles
.
resourceSynthesizers
​
public let resourceSynthesizers: [ResourceSynthesizer]
The resource synthesizers for the project to generate accessors for resources.
containsExternalDependencies
​
public var containsExternalDependencies: Bool
The project contains targets that depend on external dependencies
Methods ​
init(name:organizationName:classPrefix:options:packages:settings:targets:schemes:fileHeaderTemplate:additionalFiles:resourceSynthesizers:)
​
public init(
name: String,
organizationName: String? = nil,
classPrefix: String? = nil,
options: Options = .options(),
packages: [Package] = [],
settings: Settings? = nil,
targets: [Target] = [],
schemes: [Scheme] = [],
fileHeaderTemplate: FileHeaderTemplate? = nil,
additionalFiles: [FileElement] = [],
resourceSynthesizers: [ResourceSynthesizer] = .default
)