@@ -33,6 +33,9 @@ final class main(maxLineLength: Int) extends MainAnnotation:
33
33
34
34
override def command (args : Array [String ], commandName : String , docComment : String ) =
35
35
new Command [ArgumentParser , MainResultType ]:
36
+ private val argMarker = " --"
37
+ private val shortArgMarker = " -"
38
+
36
39
private var argNames = new mutable.ArrayBuffer [String ]
37
40
private var argShortNames = new mutable.ArrayBuffer [Option [Char ]]
38
41
private var argTypes = new mutable.ArrayBuffer [String ]
@@ -55,8 +58,8 @@ final class main(maxLineLength: Int) extends MainAnnotation:
55
58
56
59
private def isArgNameAt (idx : Int ): Boolean =
57
60
val arg = args(argIdx)
58
- val isFullName = arg.startsWith(" -- " )
59
- val isShortName = arg.startsWith(" - " ) && arg.length == 2 && shortNameIsValid(arg(1 ))
61
+ val isFullName = arg.startsWith(argMarker )
62
+ val isShortName = arg.startsWith(shortArgMarker ) && arg.length == 2 && shortNameIsValid(arg(1 ))
60
63
61
64
isFullName || isShortName
62
65
@@ -76,7 +79,7 @@ final class main(maxLineLength: Int) extends MainAnnotation:
76
79
77
80
private def argUsage (pos : Int ): String =
78
81
val name = argNames(pos)
79
- val namePrint = argShortNames(pos).map(short => s " [- $ short | -- $ name] " ).getOrElse(s " [-- $name] " )
82
+ val namePrint = argShortNames(pos).map(short => s " [ $shortArgMarker$ short | $argMarker$ name] " ).getOrElse(s " [ $argMarker $name] " )
80
83
81
84
argKinds(pos) match {
82
85
case ArgumentKind .SimpleArgument => s " $namePrint < ${argTypes(pos)}> "
@@ -153,8 +156,8 @@ final class main(maxLineLength: Int) extends MainAnnotation:
153
156
val i = args.indexOf(s, from)
154
157
if i < 0 then Seq () else i +: allIndicesOf(s, i + 1 )
155
158
156
- val indices = allIndicesOf(s " -- $argName" , 0 )
157
- val indicesShort = shortArgName.map(shortName => allIndicesOf(s " - $shortName" , 0 )).getOrElse(Seq ())
159
+ val indices = allIndicesOf(s " $argMarker $argName" , 0 )
160
+ val indicesShort = shortArgName.map(shortName => allIndicesOf(s " $shortArgMarker $shortName" , 0 )).getOrElse(Seq ())
158
161
(indices ++: indicesShort).filter(_ >= 0 )
159
162
160
163
private def getArgGetter [T ](paramInfos : ParameterInfos [_], getDefaultGetter : () => () => T )(using p : ArgumentParser [T ]): () => T =
@@ -190,7 +193,7 @@ final class main(maxLineLength: Int) extends MainAnnotation:
190
193
argKinds += argKind
191
194
192
195
val shortName = getShortName(paramInfos)
193
- shortName.foreach(c => if ! shortNameIsValid(c) then throw IllegalArgumentException (s " Invalid short name: - $c" ))
196
+ shortName.foreach(c => if ! shortNameIsValid(c) then throw IllegalArgumentException (s " Invalid short name: $shortArgMarker $c" ))
194
197
argShortNames += shortName
195
198
196
199
override def argGetter [T ](paramInfos : ParameterInfos [T ])(using p : ArgumentParser [T ]): () => T =
@@ -223,12 +226,12 @@ final class main(maxLineLength: Int) extends MainAnnotation:
223
226
case None =>
224
227
for
225
228
arg <- args
226
- if arg.startsWith(" -- " ) && ! argNames.contains(arg.drop(2 ))
229
+ if arg.startsWith(argMarker ) && ! argNames.contains(arg.drop(2 ))
227
230
do
228
231
error(s " unknown argument name: $arg" )
229
232
end flagUnused
230
233
231
- if args.contains(" -- help" ) then
234
+ if args.contains(s " ${argMarker} help " ) then
232
235
usage()
233
236
println()
234
237
explain()
0 commit comments