@@ -128,11 +128,15 @@ struct AWSLambdaPackager: CommandPlugin {
128
128
// when developing locally, we must have the full swift-aws-lambda-runtime project in the container
129
129
// because Examples' Package.swift have a dependency on ../..
130
130
// just like Package.swift's examples assume ../.., we assume we are two levels below the root project
131
- let lastComponent = packageDirectory. lastComponent
132
- let beforeLastComponent = packageDirectory . removingLastComponent ( ) . lastComponent
131
+ let packageDirectoryURL = URL ( string : packageDirectory. string ) !
132
+ let slice = packageDirectoryURL . pathComponents . suffix ( 2 )
133
133
try self . execute (
134
134
executable: dockerToolPath,
135
- arguments: [ " run " , " --rm " , " --env " , " LAMBDA_USE_LOCAL_DEPS=true " , " -v " , " \( packageDirectory. string) /../..:/workspace " , " -w " , " /workspace/ \( beforeLastComponent) / \( lastComponent) " , baseImage, " bash " , " -cl " , buildCommand] ,
135
+ arguments: [
136
+ " run " , " --rm " , " --env " , " LAMBDA_USE_LOCAL_DEPS=true " , " -v " ,
137
+ " \( packageDirectory) ../..:/workspace " , " -w " ,
138
+ " /workspace/ \( slice. joined ( separator: " / " ) ) " , baseImage, " bash " , " -cl " , buildCommand,
139
+ ] ,
136
140
logLevel: verboseLogging ? . debug : . output
137
141
)
138
142
} else {
@@ -226,13 +230,27 @@ struct AWSLambdaPackager: CommandPlugin {
226
230
#endif
227
231
228
232
// add resources
229
- let artifactDirectory = artifactPath. removingLastComponent ( )
230
- let resourcesDirectoryName = " \( packageName) _ \( product. name) .resources "
231
- let resourcesDirectory = artifactDirectory. appending ( resourcesDirectoryName)
232
- let relocatedResourcesDirectory = workingDirectory. appending ( resourcesDirectoryName)
233
- if FileManager . default. fileExists ( atPath: resourcesDirectory. string) {
234
- try FileManager . default. copyItem ( atPath: resourcesDirectory. string, toPath: relocatedResourcesDirectory. string)
235
- arguments. append ( resourcesDirectoryName)
233
+ var artifactPathComponents = URL ( string: artifactPath. string) !. pathComponents
234
+ _ = artifactPathComponents. removeFirst ( ) // Get rid of beginning "/"
235
+ _ = artifactPathComponents. removeLast ( ) // Get rid of the name of the package
236
+ let artifactDirectory = " / \( artifactPathComponents. joined ( separator: " / " ) ) "
237
+ for fileInArtifactDirectory in try FileManager . default. contentsOfDirectory ( atPath: artifactDirectory) {
238
+ guard let artifactURL = URL ( string: " \( artifactDirectory) / \( fileInArtifactDirectory) " ) else {
239
+ continue
240
+ }
241
+
242
+ guard artifactURL. pathExtension == " resources " else {
243
+ continue // Not resources, so don't copy
244
+ }
245
+ let resourcesDirectoryName = artifactURL. lastPathComponent
246
+ let relocatedResourcesDirectory = workingDirectory. appending ( resourcesDirectoryName)
247
+ if FileManager . default. fileExists ( atPath: artifactURL. path ( ) ) {
248
+ try FileManager . default. copyItem (
249
+ atPath: artifactURL. path ( ) ,
250
+ toPath: relocatedResourcesDirectory. string
251
+ )
252
+ arguments. append ( resourcesDirectoryName)
253
+ }
236
254
}
237
255
238
256
// run the zip tool
0 commit comments