Skip to content

Commit 784b046

Browse files
authored
W-12136893: validate language level option (#67)
1 parent 57c5c06 commit 784b046

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

native-cli/src/main/scala/org/mule/weave/dwnative/cli/CLIArgumentsParser.scala

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,18 @@ class CLIArgumentsParser(console: Console) {
282282
}
283283

284284
if (commandLine.hasOption(Options.LANGUAGE_LEVEL)) {
285+
val semVerPattern = "^([1-9]\\d*)\\.(0|[1-9]\\d*)".r
285286
val languageLevelStr = commandLine.getOptionValue(Options.LANGUAGE_LEVEL)
286-
maybeLanguageLevel = Some(DataWeaveVersion(languageLevelStr))
287+
maybeLanguageLevel = semVerPattern.findFirstMatchIn(languageLevelStr) match {
288+
case Some(languageLevel) => {
289+
val version = new DataWeaveVersion(languageLevel.group(1).toInt, languageLevel.group(2).toInt)
290+
if (version > DataWeaveVersion()) {
291+
return Right(s"Invalid language level, cannot be higher than ${DataWeaveVersion().toString()}")
292+
}
293+
Some(version)
294+
}
295+
case None => return Right(s"Unrecognized language level")
296+
}
287297
}
288298

289299
val commandLineArgs = commandLine.getArgs

0 commit comments

Comments
 (0)