-
-
Notifications
You must be signed in to change notification settings - Fork 508
/
Scheme.swift
129 lines (109 loc) · 3.79 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
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 init(name: String,
shared: Bool = true,
buildAction: BuildAction? = nil,
testAction: TestAction? = nil,
runAction: RunAction? = nil) {
self.name = name
self.shared = shared
self.buildAction = buildAction
self.testAction = testAction
self.runAction = runAction
}
}
// 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 preActions: [ExecutionAction]
public let postActions: [ExecutionAction]
public init(targets: [String],
arguments: Arguments? = nil,
configurationName: String,
coverage: Bool = false,
preActions: [ExecutionAction] = [],
postActions: [ExecutionAction] = []) {
self.targets = targets
self.arguments = arguments
self.configurationName = configurationName
self.coverage = coverage
self.preActions = preActions
self.postActions = postActions
}
public init(targets: [String],
arguments: Arguments? = nil,
config: PresetBuildConfiguration = .debug,
coverage: Bool = false,
preActions: [ExecutionAction] = [],
postActions: [ExecutionAction] = []) {
self.init(targets: targets,
arguments: arguments,
configurationName: config.name,
coverage: coverage,
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)
}
}