@@ -93,7 +93,10 @@ struct AWSLambdaPackager: CommandPlugin {
93
93
arguments: ["run", "--rm", "--pull", "always", "-v", "\(packageDirectory.string):/workspace", "-w", "/workspace", baseImage, "bash", "-cl", buildOutputPathCommand],
94
94
logLevel: verboseLogging ? .debug : .silent
95
95
)
96
- let buildOutputPath = Path(dockerBuildOutputPath.replacingOccurrences(of: "/workspace", with: packageDirectory.string))
96
+ guard let buildPathOutput = dockerBuildOutputPath.split(separator: "\n").last else {
97
+ throw Errors.failedParsingDockerOutput(dockerBuildOutputPath)
98
+ }
99
+ let buildOutputPath = Path(buildPathOutput.replacingOccurrences(of: "/workspace", with: packageDirectory.string))
97
100
98
101
// build the products
99
102
var builtProducts = [LambdaProduct: Path]()
@@ -107,7 +110,7 @@ struct AWSLambdaPackager: CommandPlugin {
107
110
)
108
111
let productPath = buildOutputPath.appending(product.name)
109
112
guard FileManager.default.fileExists(atPath: productPath.string) else {
110
- print ("expected '\(product.name)' binary at \"\(productPath.string)\"")
113
+ Diagnostics.error ("expected '\(product.name)' binary at \"\(productPath.string)\"")
111
114
throw Errors.productExecutableNotFound(product.name)
112
115
}
113
116
builtProducts[.init(product)] = productPath
@@ -219,7 +222,7 @@ struct AWSLambdaPackager: CommandPlugin {
219
222
print(_output)
220
223
fflush(stdout)
221
224
}
222
- output += _output
225
+ output += _output + "\n"
223
226
}
224
227
225
228
let pipe = Pipe()
@@ -364,6 +367,7 @@ private enum Errors: Error, CustomStringConvertible {
364
367
case unknownProduct(String)
365
368
case productExecutableNotFound(String)
366
369
case failedWritingDockerfile
370
+ case failedParsingDockerOutput(String)
367
371
case processFailed([String], Int32)
368
372
369
373
var description: String {
@@ -378,6 +382,8 @@ private enum Errors: Error, CustomStringConvertible {
378
382
return "product executable not found '\(product)'"
379
383
case .failedWritingDockerfile:
380
384
return "failed writing dockerfile"
385
+ case .failedParsingDockerOutput(let output):
386
+ return "failed parsing docker output: '\(output)'"
381
387
case .processFailed(let arguments, let code):
382
388
return "\(arguments.joined(separator: " ")) failed with code \(code)"
383
389
}
0 commit comments