11import org.gradle.api.DefaultTask
22import org.gradle.api.Plugin
33import org.gradle.api.Project
4+ import org.gradle.api.provider.Property
5+ import org.gradle.api.tasks.Input
46import org.gradle.api.tasks.TaskAction
7+ import org.gradle.kotlin.dsl.property
58import java.io.File
69
710class LambdaPlugin : Plugin <Project > {
811 override fun apply (project : Project ) {
9- project.tasks.create(" buildLambdaRelease" , LambdaPackagerTask ::class .java)
12+ project.run {
13+ val buildLambdaRelease = extensions.create(
14+ " buildLambdaRelease" ,
15+ LambdaPackagerExtension ::class .java,
16+ project
17+ )
18+ tasks.apply {
19+ register(" buildLambdaRelease" , LambdaPackagerTask ::class .java).configure {
20+ architecture.set(buildLambdaRelease.architecture)
21+ }
22+ }
23+ }
24+ }
25+ }
26+
27+ enum class Architecture (val path : String ) {
28+ LINUX_X64 (" linuxX64" ),
29+ LINUX_ARM64 (" linuxArm64" );
30+
31+ override fun toString (): String = path
32+ }
33+
34+ /* *
35+ * Gradle project level extension object definition for the LambdaPackagerTask
36+ *
37+ */
38+ open class LambdaPackagerExtension (project : Project ) {
39+ /* *
40+ * The architecture of the desired Lambda runtime, default: LINUX_X64
41+ */
42+ val architecture = project.objects.property<Architecture >()
43+
44+ init {
45+ architecture.set(Architecture .LINUX_X64 )
1046 }
1147}
1248
1349abstract class LambdaPackagerTask : DefaultTask () {
50+ @Input
51+ val architecture: Property <Architecture > =
52+ project.objects.property(Architecture ::class .java).convention(Architecture .LINUX_X64 )
1453
1554 @TaskAction
1655 fun packageLambda () {
@@ -20,7 +59,7 @@ abstract class LambdaPackagerTask : DefaultTask() {
2059 }
2160
2261 val buildDir = project.layout.buildDirectory
23- val executableDir = project.file(buildDir.dir(" bin/linuxX64 /releaseExecutable" ))
62+ val executableDir = project.file(buildDir.dir(" bin/${architecture.get()} /releaseExecutable" ))
2463 val executable = executableDir
2564 .listFiles()
2665 ?.first { it.name.endsWith(" .kexe" ) }
0 commit comments