Skip to content

Commit 4dcad58

Browse files
committed
Print warning if a module not present for a product, error out if zero modules in a product
1 parent 2c588fd commit 4dcad58

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

Sources/Transmute/Error.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,9 @@ extension Module {
2929
case MixedSources(String)
3030
}
3131
}
32+
33+
extension Product {
34+
public enum Error: ErrorProtocol {
35+
case NoModules(String)
36+
}
37+
}

Sources/Transmute/Package+products.swift

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,18 @@ extension Package {
3737
////// add products from the manifest
3838

3939
for p in manifest.products {
40-
//FIXME no bang
41-
let modules = p.modules.map{ moduleName in
42-
modules.pick{ $0.name == moduleName } as! SwiftModule
40+
let modules: [SwiftModule] = p.modules.flatMap{ moduleName in
41+
guard case let picked as SwiftModule = (modules.pick{ $0.name == moduleName }) else {
42+
print("warning: No module \(moduleName) found for product \(p.name)")
43+
return nil
44+
}
45+
return picked
4346
}
47+
48+
guard !modules.isEmpty else {
49+
throw Product.Error.NoModules(p.name)
50+
}
51+
4452
let product = Product(name: p.name, type: p.type, modules: modules)
4553
products.append(product)
4654
}

0 commit comments

Comments
 (0)