mirror of
https://github.com/TangentFoxy/argparse.git
synced 2025-10-02 15:12:30 +00:00
Better name inference
This commit is contained in:
@@ -5,7 +5,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct error message without arguments", function()
|
it("generates correct error message without arguments", function()
|
||||||
local handler = io.popen("./spec/script 2>&1", "r")
|
local handler = io.popen("./spec/script 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test [-v] [-h] <input> [<command>] ...",
|
"Usage: ./spec/script [-v] [-h] <input> [<command>] ...",
|
||||||
"",
|
"",
|
||||||
"Error: too few arguments",
|
"Error: too few arguments",
|
||||||
""
|
""
|
||||||
@@ -16,7 +16,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct error message with too many arguments", function()
|
it("generates correct error message with too many arguments", function()
|
||||||
local handler = io.popen("./spec/script foo bar 2>&1", "r")
|
local handler = io.popen("./spec/script foo bar 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test [-v] [-h] <input> [<command>] ...",
|
"Usage: ./spec/script [-v] [-h] <input> [<command>] ...",
|
||||||
"",
|
"",
|
||||||
"Error: unknown command 'bar'",
|
"Error: unknown command 'bar'",
|
||||||
""
|
""
|
||||||
@@ -27,7 +27,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct error message with unexpected argument", function()
|
it("generates correct error message with unexpected argument", function()
|
||||||
local handler = io.popen("./spec/script --verbose=true 2>&1", "r")
|
local handler = io.popen("./spec/script --verbose=true 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test [-v] [-h] <input> [<command>] ...",
|
"Usage: ./spec/script [-v] [-h] <input> [<command>] ...",
|
||||||
"",
|
"",
|
||||||
"Error: option '--verbose' does not take arguments",
|
"Error: option '--verbose' does not take arguments",
|
||||||
""
|
""
|
||||||
@@ -38,7 +38,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct error message with unexpected option", function()
|
it("generates correct error message with unexpected option", function()
|
||||||
local handler = io.popen("./spec/script -vq 2>&1", "r")
|
local handler = io.popen("./spec/script -vq 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test [-v] [-h] <input> [<command>] ...",
|
"Usage: ./spec/script [-v] [-h] <input> [<command>] ...",
|
||||||
"",
|
"",
|
||||||
"Error: unknown option '-q'",
|
"Error: unknown option '-q'",
|
||||||
"Did you mean one of these: '-h' '-v'?",
|
"Did you mean one of these: '-h' '-v'?",
|
||||||
@@ -50,7 +50,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct error message and tip with unexpected command", function()
|
it("generates correct error message and tip with unexpected command", function()
|
||||||
local handler = io.popen("./spec/script foo nstall 2>&1", "r")
|
local handler = io.popen("./spec/script foo nstall 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test [-v] [-h] <input> [<command>] ...",
|
"Usage: ./spec/script [-v] [-h] <input> [<command>] ...",
|
||||||
"",
|
"",
|
||||||
"Error: unknown command 'nstall'",
|
"Error: unknown command 'nstall'",
|
||||||
"Did you mean 'install'?",
|
"Did you mean 'install'?",
|
||||||
@@ -62,7 +62,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct error message without arguments in command", function()
|
it("generates correct error message without arguments in command", function()
|
||||||
local handler = io.popen("./spec/script foo install 2>&1", "r")
|
local handler = io.popen("./spec/script foo install 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test install [-f <server>] [-h] <rock> [<version>]",
|
"Usage: ./spec/script install [-f <server>] [-h] <rock> [<version>]",
|
||||||
"",
|
"",
|
||||||
"Error: too few arguments",
|
"Error: too few arguments",
|
||||||
""
|
""
|
||||||
@@ -73,7 +73,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct error message and tip in command", function()
|
it("generates correct error message and tip in command", function()
|
||||||
local handler = io.popen("./spec/script foo install bar --form=there 2>&1", "r")
|
local handler = io.popen("./spec/script foo install bar --form=there 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test install [-f <server>] [-h] <rock> [<version>]",
|
"Usage: ./spec/script install [-f <server>] [-h] <rock> [<version>]",
|
||||||
"",
|
"",
|
||||||
"Error: unknown option '--form'",
|
"Error: unknown option '--form'",
|
||||||
"Did you mean '--from'?",
|
"Did you mean '--from'?",
|
||||||
@@ -87,7 +87,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct help message", function()
|
it("generates correct help message", function()
|
||||||
local handler = io.popen("./spec/script --help 2>&1", "r")
|
local handler = io.popen("./spec/script --help 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test [-v] [-h] <input> [<command>] ...",
|
"Usage: ./spec/script [-v] [-h] <input> [<command>] ...",
|
||||||
"",
|
"",
|
||||||
"A testing program. ",
|
"A testing program. ",
|
||||||
"",
|
"",
|
||||||
@@ -108,7 +108,7 @@ describe("tests related to CLI behaviour #unsafe", function()
|
|||||||
it("generates correct help message for command", function()
|
it("generates correct help message for command", function()
|
||||||
local handler = io.popen("./spec/script foo install --help 2>&1", "r")
|
local handler = io.popen("./spec/script foo install --help 2>&1", "r")
|
||||||
assert.equal(table.concat({
|
assert.equal(table.concat({
|
||||||
"Usage: test install [-f <server>] [-h] <rock> [<version>]",
|
"Usage: ./spec/script install [-f <server>] [-h] <rock> [<version>]",
|
||||||
"",
|
"",
|
||||||
"Install a rock. ",
|
"Install a rock. ",
|
||||||
"",
|
"",
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env lua
|
#!/usr/bin/env lua
|
||||||
local Parser = require "argparse"
|
local Parser = require "argparse"
|
||||||
|
|
||||||
local parser = Parser "test"
|
local parser = Parser()
|
||||||
:description "A testing program. "
|
:description "A testing program. "
|
||||||
:require_command(false)
|
:require_command(false)
|
||||||
|
|
||||||
@@ -26,6 +26,8 @@ install:option "-f" "--from"
|
|||||||
:description "Fetch the rock from this server. "
|
:description "Fetch the rock from this server. "
|
||||||
:target "server"
|
:target "server"
|
||||||
|
|
||||||
|
local usage = parser:get_usage()
|
||||||
|
local help = parser:get_help()
|
||||||
local args = parser:parse()
|
local args = parser:parse()
|
||||||
|
|
||||||
print(args.input)
|
print(args.input)
|
||||||
|
@@ -27,7 +27,7 @@ do -- Create classes with setters
|
|||||||
table.insert(self._aliases, name_or_options)
|
table.insert(self._aliases, name_or_options)
|
||||||
end
|
end
|
||||||
|
|
||||||
if not self._name then
|
if not self._aliases or not self._name then
|
||||||
self._name = name_or_options
|
self._name = name_or_options
|
||||||
end
|
end
|
||||||
elseif type(name_or_options) == "table" then
|
elseif type(name_or_options) == "table" then
|
||||||
@@ -576,13 +576,6 @@ end
|
|||||||
|
|
||||||
function Parser:_parse(args, errhandler)
|
function Parser:_parse(args, errhandler)
|
||||||
args = args or arg
|
args = args or arg
|
||||||
local noname
|
|
||||||
|
|
||||||
if not self._name then
|
|
||||||
noname = true
|
|
||||||
self._name = args[0]
|
|
||||||
end
|
|
||||||
|
|
||||||
local parser
|
local parser
|
||||||
local charset
|
local charset
|
||||||
local options = {}
|
local options = {}
|
||||||
@@ -889,10 +882,6 @@ function Parser:_parse(args, errhandler)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if noname then
|
|
||||||
self._name = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -927,5 +916,5 @@ function Parser:pparse(args)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return function(...)
|
return function(...)
|
||||||
return Parser():add_help(true)(...)
|
return Parser(arg[0]):add_help(true)(...)
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user