Skip to content

Commit 89a4ba9

Browse files
committed
error handling
1 parent 0eed404 commit 89a4ba9

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

Plugins/AWSLambdaPackager/Plugin.swift

+9-3
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,10 @@ struct AWSLambdaPackager: CommandPlugin {
9393
arguments: ["run", "--rm", "--pull", "always", "-v", "\(packageDirectory.string):/workspace", "-w", "/workspace", baseImage, "bash", "-cl", buildOutputPathCommand],
9494
logLevel: verboseLogging ? .debug : .silent
9595
)
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))
97100

98101
// build the products
99102
var builtProducts = [LambdaProduct: Path]()
@@ -107,7 +110,7 @@ struct AWSLambdaPackager: CommandPlugin {
107110
)
108111
let productPath = buildOutputPath.appending(product.name)
109112
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)\"")
111114
throw Errors.productExecutableNotFound(product.name)
112115
}
113116
builtProducts[.init(product)] = productPath
@@ -219,7 +222,7 @@ struct AWSLambdaPackager: CommandPlugin {
219222
print(_output)
220223
fflush(stdout)
221224
}
222-
output += _output
225+
output += _output + "\n"
223226
}
224227

225228
let pipe = Pipe()
@@ -364,6 +367,7 @@ private enum Errors: Error, CustomStringConvertible {
364367
case unknownProduct(String)
365368
case productExecutableNotFound(String)
366369
case failedWritingDockerfile
370+
case failedParsingDockerOutput(String)
367371
case processFailed([String], Int32)
368372

369373
var description: String {
@@ -378,6 +382,8 @@ private enum Errors: Error, CustomStringConvertible {
378382
return "product executable not found '\(product)'"
379383
case .failedWritingDockerfile:
380384
return "failed writing dockerfile"
385+
case .failedParsingDockerOutput(let output):
386+
return "failed parsing docker output: '\(output)'"
381387
case .processFailed(let arguments, let code):
382388
return "\(arguments.joined(separator: " ")) failed with code \(code)"
383389
}

0 commit comments

Comments
 (0)