@@ -24,7 +24,9 @@ import scala.util.Try
2424@ DirectiveExamples (" //> using packaging.output foo" )
2525@ DirectiveExamples (" //> using packaging.provided org.apache.spark::spark-sql" )
2626@ DirectiveExamples (" //> using packaging.graalvmArgs --no-fallback" )
27- @ DirectiveExamples (" //> using packaging.graalvmJvmId graalvm-community:23.0.2" )
27+ @ DirectiveExamples (" //> using packaging.graalvmVersion 17.0.9" )
28+ @ DirectiveExamples (" //> using packaging.graalvmJavaVersion 17" )
29+ @ DirectiveExamples (" //> using packaging.graalvmJvmId graalvm-java17:17.0.9" )
2830@ DirectiveExamples (" //> using packaging.dockerFrom openjdk:11" )
2931@ DirectiveExamples (" //> using packaging.dockerImageTag 1.0.0" )
3032@ DirectiveExamples (" //> using packaging.dockerImageRegistry virtuslab" )
@@ -39,6 +41,9 @@ import scala.util.Try
3941 """ using packaging.packageType [package type]
4042 |using packaging.output [destination path]
4143 |using packaging.provided [module]
44+ |using packaging.graalvmVersion [graalvm version]
45+ |using packaging.graalvmJavaVersion [graalvm java version]
46+ |using packaging.graalvmJvmId [graalvm jvm id]
4247 |using packaging.graalvmArgs [args]
4348 |using packaging.dockerFrom [base docker image]
4449 |using packaging.dockerImageTag [image tag]
@@ -55,6 +60,10 @@ import scala.util.Try
5560 |
5661 |`//> using packaging.graalvmArgs` _args_
5762 |
63+ |`//> using packaging.graalvmVersion` _graalvm-version_
64+ |
65+ |`//> using packaging.graalvmJavaVersion` _graalvm-java-version_
66+ |
5867 |`//> using packaging.graalvmJvmId` _graalvm-jvm-id_
5968 |
6069 |`//> using packaging.dockerFrom` _base-docker-image_
@@ -79,6 +88,8 @@ final case class Packaging(
7988 output : Option [String ] = None ,
8089 provided : List [Positioned [String ]] = Nil ,
8190 graalvmArgs : List [Positioned [String ]] = Nil ,
91+ graalvmVersion : Option [String ] = None ,
92+ graalvmJavaVersion : Option [Positioned [String ]] = None ,
8293 graalvmJvmId : Option [String ] = None ,
8394 dockerFrom : Option [String ] = None ,
8495 dockerImageTag : Option [String ] = None ,
@@ -120,9 +131,23 @@ final case class Packaging(
120131 }
121132 .sequence
122133 .left.map(CompositeBuildException (_))
134+ val maybeGraalVMJavaVersion = graalvmJavaVersion
135+ .map { version =>
136+ version.value.toIntOption
137+ .filter(_ > 7 )
138+ .toRight {
139+ new MalformedInputError (
140+ " graalvm-java-version" ,
141+ version.value,
142+ " an integer greater than 7" ,
143+ positions = version.positions
144+ )
145+ }
146+ }
147+ .sequence
123148
124- val (packageTypeOpt, output0, provided0) = value {
125- (maybePackageTypeOpt, maybeOutput, maybeProvided)
149+ val (packageTypeOpt, output0, provided0, graalVMJavaVersion0 ) = value {
150+ (maybePackageTypeOpt, maybeOutput, maybeProvided, maybeGraalVMJavaVersion )
126151 .traverseN
127152 .left.map(CompositeBuildException (_))
128153 }
@@ -162,6 +187,8 @@ final case class Packaging(
162187 extraDirectories = extraDirectories
163188 ),
164189 nativeImageOptions = NativeImageOptions (
190+ graalvmVersion = graalvmVersion,
191+ graalvmJavaVersion = graalVMJavaVersion0,
165192 graalvmJvmId = graalvmJvmId,
166193 graalvmArgs = graalvmArgs
167194 )
0 commit comments