Support deprecatedName for advanced CLI arguments

This commit is contained in:
Alexander Udalov
2017-09-13 20:04:07 +03:00
committed by Denis Zharkov
parent 92215b41b9
commit d32e101802
@@ -71,20 +71,33 @@ fun <A : CommonToolArguments> parseCommandLineArguments(args: List<String>, resu
var freeArgsStarted = false var freeArgsStarted = false
fun ArgumentField.matches(arg: String): Boolean { fun ArgumentField.matches(arg: String): Boolean {
if (argument.deprecatedName.takeUnless(String::isEmpty) == arg) { if (argument.shortName.takeUnless(String::isEmpty) == arg) {
errors.deprecatedArguments[argument.deprecatedName] = argument.value
return true return true
} }
if (argument.value == arg) { val deprecatedName = argument.deprecatedName.takeUnless(String::isEmpty)
if (argument.isAdvanced && property.returnType.classifier != Boolean::class) { if (deprecatedName == arg) {
errors.extraArgumentsPassedInObsoleteForm.add(arg) errors.deprecatedArguments[deprecatedName] = argument.value
return true
}
if (argument.isAdvanced) {
if (argument.value == arg) {
if (property.returnType.classifier != Boolean::class) {
errors.extraArgumentsPassedInObsoleteForm.add(arg)
}
return true
} }
return true
if (deprecatedName != null && arg.startsWith(deprecatedName + "=")) {
errors.deprecatedArguments[deprecatedName] = argument.value
return true
}
return arg.startsWith(argument.value + "=")
} }
return argument.shortName.takeUnless(String::isEmpty) == arg || return argument.value == arg
(argument.isAdvanced && arg.startsWith(argument.value + "="))
} }
var i = 0 var i = 0
@@ -116,6 +129,9 @@ fun <A : CommonToolArguments> parseCommandLineArguments(args: List<String>, resu
argument.isAdvanced && arg.startsWith(argument.value + "=") -> { argument.isAdvanced && arg.startsWith(argument.value + "=") -> {
arg.substring(argument.value.length + 1) arg.substring(argument.value.length + 1)
} }
argument.isAdvanced && arg.startsWith(argument.deprecatedName + "=") -> {
arg.substring(argument.deprecatedName.length + 1)
}
i == args.size -> { i == args.size -> {
errors.argumentWithoutValue = arg errors.argumentWithoutValue = arg
break@loop break@loop