@@ -16,6 +16,7 @@ let knownImportsToIgnore = [
16
16
17
17
let packageNameForDependency = [
18
18
" ArgumentParser " : " swift-argument-parser " ,
19
+ " AtomicModels " : " GraphiteClient " ,
19
20
]
20
21
21
22
let jsonEncoder = JSONEncoder ( )
@@ -30,7 +31,8 @@ struct ModuleDescription {
30
31
let name : String
31
32
let deps : [ String ]
32
33
let path : String
33
- let isTest : Bool
34
+ let isTestTarget : Bool
35
+ let isTestHelper : Bool
34
36
}
35
37
36
38
func generate( at url: URL , isTestTarget: Bool ) throws -> [ ModuleDescription ] {
@@ -85,20 +87,32 @@ func generate(at url: URL, isTestTarget: Bool) throws -> [ModuleDescription] {
85
87
let isTestHelper = moduleFolderUrl. path. hasSuffix ( " TestHelpers " )
86
88
87
89
result. append (
88
- ModuleDescription ( name: moduleName, deps: dependencies, path: String ( path) , isTest : isTestTarget && ! isTestHelper)
90
+ ModuleDescription ( name: moduleName, deps: dependencies, path: String ( path) , isTestTarget : isTestTarget, isTestHelper : isTestHelper)
89
91
)
90
92
}
91
93
92
94
return result
93
95
}
94
96
95
- func generatePackageSwift( raplacementForTargets: [ String ] ) throws {
97
+ func generatePackageSwift(
98
+ raplacementForTargets: [ String ] ,
99
+ replacementForTargetNames: [ String ] ,
100
+ replacementForTestHelpers: [ String ]
101
+ ) throws {
96
102
log ( " Loading template " )
97
103
var templateContents = try String ( contentsOf: URL ( fileURLWithPath: " PackageTemplate.swift.txt " ) )
98
104
templateContents = templateContents. replacingOccurrences (
99
105
of: " <__TARGETS__> " ,
100
106
with: raplacementForTargets. map { " \( $0) " } . joined ( separator: " \n " )
101
107
)
108
+ templateContents = templateContents. replacingOccurrences (
109
+ of: " <__TARGET_NAMES__> " ,
110
+ with: replacementForTargetNames. map { " \" \( $0) \" , " } . joined ( separator: " \n " )
111
+ )
112
+ templateContents = templateContents. replacingOccurrences (
113
+ of: " <__TEST_HELPER_NAMES__> " ,
114
+ with: replacementForTestHelpers. map { " \" \( $0) \" , " } . joined ( separator: " \n " )
115
+ )
102
116
103
117
let packageSwiftPath = URL ( fileURLWithPath: " Package.swift " )
104
118
@@ -127,8 +141,7 @@ func main() throws {
127
141
var generatedTargetStatements = [ String] ( )
128
142
let sortedModuleDescriptions : [ ModuleDescription ] = moduleDescriptions. sorted { $0. name < $1. name }
129
143
for moduleDescription in sortedModuleDescriptions {
130
- generatedTargetStatements. append ( " . \( !moduleDescription. isTest ? " target " : " testTarget " ) ( " )
131
- generatedTargetStatements. append ( " // MARK: \( moduleDescription. name) " )
144
+ generatedTargetStatements. append ( " . \( !( moduleDescription. isTestTarget && !moduleDescription. isTestHelper) ? " target " : " testTarget " ) ( " )
132
145
generatedTargetStatements. append ( " name: " + " \" \( moduleDescription. name) \" " + " , " )
133
146
generatedTargetStatements. append ( " dependencies: [ " )
134
147
for dependency in moduleDescription. deps {
@@ -142,7 +155,11 @@ func main() throws {
142
155
generatedTargetStatements. append ( " path: " + " \" " + moduleDescription. path + " \" " )
143
156
generatedTargetStatements. append ( " ), " )
144
157
}
145
- try generatePackageSwift ( raplacementForTargets: generatedTargetStatements)
158
+ try generatePackageSwift (
159
+ raplacementForTargets: generatedTargetStatements,
160
+ replacementForTargetNames: sortedModuleDescriptions. filter { !$0. isTestTarget } . map { $0. name } ,
161
+ replacementForTestHelpers: sortedModuleDescriptions. filter { $0. isTestHelper } . map { $0. name }
162
+ )
146
163
}
147
164
148
165
try main ( )
0 commit comments