-
-
Notifications
You must be signed in to change notification settings - Fork 508
/
Scheme.swift
161 lines (138 loc) · 4.95 KB
/
Scheme.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import Foundation
// MARK: - Scheme
public struct Scheme: Equatable, Codable {
public let name: String
public let shared: Bool
public let buildAction: BuildAction?
public let testAction: TestAction?
public let runAction: RunAction?
public let archiveAction: ArchiveAction?
public init(name: String,
shared: Bool = true,
buildAction: BuildAction? = nil,
testAction: TestAction? = nil,
runAction: RunAction? = nil,
archiveAction: ArchiveAction? = nil) {
self.name = name
self.shared = shared
self.buildAction = buildAction
self.testAction = testAction
self.runAction = runAction
self.archiveAction = archiveAction
}
}
// MARK: - ExecutionAction
public struct ExecutionAction: Equatable, Codable {
public let title: String
public let scriptText: String
public let target: String?
public init(title: String = "Run Script", scriptText: String, target: String? = nil) {
self.title = title
self.scriptText = scriptText
self.target = target
}
}
// MARK: - Arguments
public struct Arguments: Equatable, Codable {
public let environment: [String: String]
public let launch: [String: Bool]
public init(environment: [String: String] = [:],
launch: [String: Bool] = [:]) {
self.environment = environment
self.launch = launch
}
}
// MARK: - BuildAction
public struct BuildAction: Equatable, Codable {
public let targets: [String]
public let preActions: [ExecutionAction]
public let postActions: [ExecutionAction]
public init(targets: [String],
preActions: [ExecutionAction] = [],
postActions: [ExecutionAction] = []) {
self.targets = targets
self.preActions = preActions
self.postActions = postActions
}
}
// MARK: - TestAction
public struct TestAction: Equatable, Codable {
public let targets: [String]
public let arguments: Arguments?
public let configurationName: String
public let coverage: Bool
public let codeCoverageTargets: [String]
public let preActions: [ExecutionAction]
public let postActions: [ExecutionAction]
public init(targets: [String],
arguments: Arguments? = nil,
configurationName: String,
coverage: Bool = false,
codeCoverageTargets: [String] = [],
preActions: [ExecutionAction] = [],
postActions: [ExecutionAction] = []) {
self.targets = targets
self.arguments = arguments
self.configurationName = configurationName
self.coverage = coverage
self.preActions = preActions
self.postActions = postActions
self.codeCoverageTargets = codeCoverageTargets
}
public init(targets: [String],
arguments: Arguments? = nil,
config: PresetBuildConfiguration = .debug,
coverage: Bool = false,
codeCoverageTargets: [String] = [],
preActions: [ExecutionAction] = [],
postActions: [ExecutionAction] = []) {
self.init(targets: targets,
arguments: arguments,
configurationName: config.name,
coverage: coverage,
codeCoverageTargets: codeCoverageTargets,
preActions: preActions,
postActions: postActions)
}
}
// MARK: - RunAction
public struct RunAction: Equatable, Codable {
public let configurationName: String
public let executable: String?
public let arguments: Arguments?
public init(configurationName: String,
executable: String? = nil,
arguments: Arguments? = nil) {
self.configurationName = configurationName
self.executable = executable
self.arguments = arguments
}
public init(config: PresetBuildConfiguration = .debug,
executable: String? = nil,
arguments: Arguments? = nil) {
self.init(configurationName: config.name,
executable: executable,
arguments: arguments)
}
}
// MARK: - Archive Action
public struct ArchiveAction: Equatable, Codable {
public let configurationName: String
public let revealArchiveInOrganizer: Bool
public let customArchiveName: String?
public let preActions: [ExecutionAction]
public let postActions: [ExecutionAction]
public init(
configurationName: String,
revealArchiveInOrganizer: Bool = true,
customArchiveName: String? = nil,
preActions: [ExecutionAction] = [],
postActions: [ExecutionAction] = []
) {
self.configurationName = configurationName
self.revealArchiveInOrganizer = revealArchiveInOrganizer
self.customArchiveName = customArchiveName
self.preActions = preActions
self.postActions = postActions
}
}