Skip to content

Commit

Permalink
Partial revert: Only make --arg=value fulfill optional arguments.
Browse files Browse the repository at this point in the history
Otherwise, it's too confusing that flag arguments now consume maybe-unrelated place arguments.
  • Loading branch information
FeepingCreature committed Mar 13, 2024
1 parent 58416f5 commit cc44b38
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/std/argparse.nt
Original file line number Diff line number Diff line change
Expand Up @@ -190,18 +190,18 @@ unittest
unittest
{
auto parser = new GccArgParser;
parser.add("t", "test", :optionalArg, :hidden);
parser.add("test", :optionalArg, :hidden);
with (parser.parse(["foo", "--test"])
.case(Error: assert(false)))
{
assert(get("test") == "");
assert(remaining == ["foo"]);
}
with (parser.parse(["-t", "2"])
with (parser.parse(["--test", "2", "foo"])
.case(Error: assert(false)))
{
assert(get("test") == "2");
assert(remaining.empty);
assert(get("test") == "");
assert(remaining == ["2", "foo"]);
}
with (parser.parse(["--test=2", "foo"])
.case(Error: assert(false)))
Expand Down Expand Up @@ -369,16 +369,14 @@ class GccArgParser : ArgParser
(void | Error) parseArg(ArgInfo argInfo, string flagInfo) {
if (argInfo.kind == :noArg || argInfo.kind == :optionalArg) {
result.foundArgs[argInfo.longOrShort] = null;
if (argInfo.kind == :noArg) return;
return;
}
if (args.empty) {
if (argInfo.kind == :optionalArg) return;
return new Error("Flag $flagInfo missing parameter");
}
auto parameter = args[0];
args = args[1 .. $];
if (parameter.startsWith("-")) {
if (argInfo.kind == :optionalArg) return;
return new Error("Flag $flagInfo missing parameter");
}
return parseArgParameter(argInfo, parameter, flagInfo);
Expand Down

0 comments on commit cc44b38

Please sign in to comment.