From fe0b5f2874fd486c7313f70619bb68dbfceab4ae Mon Sep 17 00:00:00 2001 From: mpeterv Date: Sun, 12 Jan 2014 23:41:46 +0400 Subject: [PATCH] renamed largparse -> argparse; imported testing setup from literal --- .gitignore | 2 + .travis.yml | 12 +++- .travis_setup.sh | 33 +++++++++++ README.md | 6 +- ...wip-1.rockspec => argparse-git-1.rockspec} | 12 ++-- rockspecs/largparse-lrcompat-1.rockspec | 22 ------- spec/arguments_spec.lua | 46 +++++++-------- spec/default_spec.lua | 18 +++--- spec/options_spec.lua | 58 +++++++++---------- spec/utils_spec.lua | 2 +- src/{largparse.lua => argparse.lua} | 10 ++-- test/test.lua | 21 ------- 12 files changed, 120 insertions(+), 122 deletions(-) create mode 100644 .gitignore create mode 100644 .travis_setup.sh rename rockspecs/{largparse-wip-1.rockspec => argparse-git-1.rockspec} (62%) delete mode 100644 rockspecs/largparse-lrcompat-1.rockspec rename src/{largparse.lua => argparse.lua} (97%) delete mode 100644 test/test.lua diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..92e3a76 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +*.luac diff --git a/.travis.yml b/.travis.yml index 214d465..20d22fd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,15 @@ language: c +env: + - LUA="Lua 5.1" + - LUA="Lua 5.2" + - LUA="LuaJIT 2.0" + +before_install: + - bash .travis_setup.sh + install: - - sudo apt-get install luarocks + - sudo luarocks make rockspecs/argparse-git-1.rockspec - sudo luarocks install busted - - sudo luarocks install 30log - - sudo luarocks make rockspecs/largparse-lrcompat-1.rockspec script: "busted spec" diff --git a/.travis_setup.sh b/.travis_setup.sh new file mode 100644 index 0000000..bb96238 --- /dev/null +++ b/.travis_setup.sh @@ -0,0 +1,33 @@ +# A script for setting up environment for travis-ci testing. +# Sets up Lua and Luarocks. +# LUA must be "Lua 5.1", "Lua 5.2" or "LuaJIT 2.0". + +if [ "$LUA" == "LuaJIT 2.0" ]; then + curl http://luajit.org/download/LuaJIT-2.0.2.tar.gz | tar xz + cd LuaJIT-2.0.2 + make && sudo make install + cd ..; +else + if [ "$LUA" == "Lua 5.1" ]; then + curl http://www.lua.org/ftp/lua-5.1.5.tar.gz | tar xz + cd lua-5.1.5; + elif [ "$LUA" == "Lua 5.2" ]; then + curl http://www.lua.org/ftp/lua-5.2.3.tar.gz | tar xz + cd lua-5.2.3; + fi + + sudo make linux install + cd ..; +fi + +curl http://luarocks.org/releases/luarocks-2.1.1.tar.gz | tar xz +cd luarocks-2.1.1 + +if [ "$LUA" == "LuaJIT 2.0" ]; then + ./configure --lua-suffix=jit --with-lua-include=/usr/local/include/luajit-2.0; +else + ./configure; +fi + +make && sudo make install +cd .. diff --git a/README.md b/README.md index d88a9e0..091ff0f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -largparse +argparse ========= Feature-rich command line parser for Lua inspired by argparse for Python. @@ -9,9 +9,9 @@ Something already works: ```lua -local largparse = require "largparse" +local argparse = require "argparse" -local parser = largparse.parser() +local parser = argparse.parser() parser:argument("input", { args = 2 diff --git a/rockspecs/largparse-wip-1.rockspec b/rockspecs/argparse-git-1.rockspec similarity index 62% rename from rockspecs/largparse-wip-1.rockspec rename to rockspecs/argparse-git-1.rockspec index 659593b..016b525 100644 --- a/rockspecs/largparse-wip-1.rockspec +++ b/rockspecs/argparse-git-1.rockspec @@ -1,7 +1,7 @@ -package = "largparse" -version = "wip-1" +package = "argparse" +version = "git-1" source = { - url = "src" + url = "git://github.com/mpeterv/literal.git" } description = { summary = "*** please specify description summary ***", @@ -16,8 +16,8 @@ dependencies = { build = { type = "builtin", modules = { - largparse = "src/largparse.lua", - ["largparse.state"] = "src/state.lua", - ["largparse.utils"] = "src/utils.lua" + argparse = "src/argparse.lua", + ["argparse.state"] = "src/state.lua", + ["argparse.utils"] = "src/utils.lua" } } diff --git a/rockspecs/largparse-lrcompat-1.rockspec b/rockspecs/largparse-lrcompat-1.rockspec deleted file mode 100644 index 5ac66ac..0000000 --- a/rockspecs/largparse-lrcompat-1.rockspec +++ /dev/null @@ -1,22 +0,0 @@ -package = "largparse" -version = "lrcompat-1" -source = { - url = "src" -} -description = { - summary = "*** please specify description summary ***", - detailed = "*** please enter a detailed description ***", - homepage = "*** please enter a project homepage ***", - license = "MIT/X11" -} -dependencies = { - "lua >= 5.1, < 5.3" -} -build = { - type = "builtin", - modules = { - largparse = "src/largparse.lua", - ["largparse.state"] = "src/state.lua", - ["largparse.utils"] = "src/utils.lua" - } -} diff --git a/spec/arguments_spec.lua b/spec/arguments_spec.lua index 74cef05..eca5f84 100644 --- a/spec/arguments_spec.lua +++ b/spec/arguments_spec.lua @@ -1,4 +1,4 @@ -local largparse = require "largparse" +local argparse = require "argparse" describe("tests related to positional arguments", function() local function curry(f, ...) @@ -8,20 +8,20 @@ describe("tests related to positional arguments", function() describe("passing correct arguments", function() it("handles empty parser correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() local args = parser:parse({}) assert.same(args, {}) end) it("handles one argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo" local args = parser:parse({"bar"}) assert.same(args, {foo = "bar"}) end) it("handles several arguments correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo1" parser:argument "foo2" local args = parser:parse({"bar", "baz"}) @@ -29,7 +29,7 @@ describe("tests related to positional arguments", function() end) it("handles multi-argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { args = "*" }) @@ -38,7 +38,7 @@ describe("tests related to positional arguments", function() end) it("handles restrained multi-argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { args = "2-4" }) @@ -47,7 +47,7 @@ describe("tests related to positional arguments", function() end) it("handles several multi-arguments correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo1", { args = "1-2" }) @@ -61,14 +61,14 @@ describe("tests related to positional arguments", function() end) it("handles hyphen correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo" local args = parser:parse({"-"}) assert.same(args, {foo = "-"}) end) it("handles double hyphen correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo" local args = parser:parse({"--", "-q"}) assert.same(args, {foo = "-q"}) @@ -76,45 +76,45 @@ describe("tests related to positional arguments", function() end) describe("passing incorrect arguments", function() - local old_parser = largparse.parser + local old_parser = argparse.parser setup(function() - largparse.parser = old_parser:extends() - function largparse.parser:error(fmt, ...) + argparse.parser = old_parser:extends() + function argparse.parser:error(fmt, ...) error(fmt:format(...)) end end) it("handles extra arguments with empty parser correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() assert.has_error(curry(parser.parse, parser, {"foo"}), "too many arguments") end) it("handles extra arguments with one argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo" assert.has_error(curry(parser.parse, parser, {"bar", "baz"}), "too many arguments") end) it("handles sudden option correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo" assert.has_error(curry(parser.parse, parser, {"-q"}), "unknown option -q") end) it("handles too few arguments with one argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo" assert.has_error(curry(parser.parse, parser, {}), "too few arguments") end) it("handles extra arguments with several arguments correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo1" parser:argument "foo2" @@ -122,7 +122,7 @@ describe("tests related to positional arguments", function() end) it("handles too few arguments with several arguments correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument "foo1" parser:argument "foo2" @@ -130,7 +130,7 @@ describe("tests related to positional arguments", function() end) it("handles too few arguments with multi-argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { args = "+" }) @@ -138,7 +138,7 @@ describe("tests related to positional arguments", function() end) it("handles too many arguments with multi-argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { args = "2-4" }) @@ -146,7 +146,7 @@ describe("tests related to positional arguments", function() end) it("handles too few arguments with multi-argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { args = "2-4" }) @@ -154,7 +154,7 @@ describe("tests related to positional arguments", function() end) it("handles too many arguments with several multi-arguments correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo1", { args = "1-2" }) @@ -165,7 +165,7 @@ describe("tests related to positional arguments", function() end) it("handles too few arguments with several multi-arguments correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo1", { args = "1-2" }) diff --git a/spec/default_spec.lua b/spec/default_spec.lua index 12cb302..8c73c18 100644 --- a/spec/default_spec.lua +++ b/spec/default_spec.lua @@ -1,9 +1,9 @@ -local largparse = require "largparse" +local argparse = require "argparse" describe("tests related to default values", function() describe("default values for arguments", function() it("handles default argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { default = "bar" }) @@ -12,7 +12,7 @@ describe("tests related to default values", function() end) it("handles default multi-argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { args = 3, default = "bar" @@ -22,7 +22,7 @@ describe("tests related to default values", function() end) it("does not use default values if not needed", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:argument("foo", { args = "1-2", default = "bar" @@ -34,7 +34,7 @@ describe("tests related to default values", function() describe("default values for options", function() it("handles option with default value correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-f", "--foo", { default = "bar" }) @@ -43,7 +43,7 @@ describe("tests related to default values", function() end) it("doesn't use default if option is not invoked", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-f", "--foo", { default = "bar" }) @@ -52,7 +52,7 @@ describe("tests related to default values", function() end) it("handles default multi-argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-f", "--foo", { args = 3, default = "bar" @@ -62,7 +62,7 @@ describe("tests related to default values", function() end) it("does not use default values if not needed", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-f", "--foo", { args = "1-2", default = "bar" @@ -72,7 +72,7 @@ describe("tests related to default values", function() end) it("handles multi-count options with default value correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-f", "--foo", { count = "*", default = "bar" diff --git a/spec/options_spec.lua b/spec/options_spec.lua index 43c6996..5bd56bd 100644 --- a/spec/options_spec.lua +++ b/spec/options_spec.lua @@ -1,4 +1,4 @@ -local largparse = require "largparse" +local argparse = require "argparse" describe("tests related to options", function() local function curry(f, ...) @@ -8,28 +8,28 @@ describe("tests related to options", function() describe("passing correct options", function() it("handles no options passed correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server") local args = parser:parse({}) assert.same(args, {}) end) it("handles one option correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server") local args = parser:parse({"--server", "foo"}) assert.same(args, {server = "foo"}) end) it("handles GNU-style long options", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server") local args = parser:parse({"--server=foo"}) assert.same(args, {server = "foo"}) end) it("handles GNU-style long options even when it could take more arguments", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server", { args = "*" }) @@ -38,7 +38,7 @@ describe("tests related to options", function() end) it("handles GNU-style long options for multi-argument options", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server", { args = "1-2" }) @@ -47,21 +47,21 @@ describe("tests related to options", function() end) it("handles short option correclty", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server") local args = parser:parse({"-s", "foo"}) assert.same(args, {server = "foo"}) end) it("handles flag correclty", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:flag("-q", "--quiet") local args = parser:parse({"--quiet"}) assert.same(args, {quiet = true}) end) it("handles combined flags correclty", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:flag("-q", "--quiet") parser:flag("-f", "--fast") local args = parser:parse({"-qf"}) @@ -69,14 +69,14 @@ describe("tests related to options", function() end) it("handles short options without space between option and argument", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server") local args = parser:parse({"-sfoo"}) assert.same(args, {server = "foo"}) end) it("handles flags combined with short option correclty", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:flag("-q", "--quiet") parser:option("-s", "--server") local args = parser:parse({"-qsfoo"}) @@ -85,7 +85,7 @@ describe("tests related to options", function() describe("Options with optional argument", function() it("handles emptiness correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-p", "--password", { args = "?" }) @@ -94,7 +94,7 @@ describe("tests related to options", function() end) it("handles option without argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-p", "--password", { args = "?" }) @@ -103,7 +103,7 @@ describe("tests related to options", function() end) it("handles option with argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-p", "--password", { args = "?" }) @@ -113,7 +113,7 @@ describe("tests related to options", function() end) it("handles multi-argument options correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("--pair", { args = 2 }) @@ -123,7 +123,7 @@ describe("tests related to options", function() describe("Multi-count options", function() it("handles multi-count option correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-e", "--exclude", { count = "*" }) @@ -132,7 +132,7 @@ describe("tests related to options", function() end) it("handles not used multi-count option correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-e", "--exclude", { count = "*" }) @@ -141,7 +141,7 @@ describe("tests related to options", function() end) it("handles multi-count multi-argument option correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-e", "--exclude", { count = "*", args = 2 @@ -151,7 +151,7 @@ describe("tests related to options", function() end) it("handles multi-count option with optional argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-w", "--why", "--why-would-someone-use-this", { count = "*", args = "?" @@ -161,7 +161,7 @@ describe("tests related to options", function() end) it("handles multi-count flag correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:flag("-q", "--quiet", { count = "*" }) @@ -170,7 +170,7 @@ describe("tests related to options", function() end) it("overwrites old invocations", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-u", "--user", { count = "0-2" }) @@ -179,7 +179,7 @@ describe("tests related to options", function() end) it("handles not used multi-count flag correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:flag("-q", "--quiet", { count = "*" }) @@ -190,35 +190,35 @@ describe("tests related to options", function() end) describe("passing incorrect options", function() - local old_parser = largparse.parser + local old_parser = argparse.parser setup(function() - largparse.parser = old_parser:extends() - function largparse.parser:error(fmt, ...) + argparse.parser = old_parser:extends() + function argparse.parser:error(fmt, ...) error(fmt:format(...)) end end) it("handles lack of required argument correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server") assert.has_error(curry(parser.parse, parser, {"--server"}), "too few arguments") end) it("handles too many arguments correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:option("-s", "--server") assert.has_error(curry(parser.parse, parser, {"-sfoo", "bar"}), "too many arguments") end) it("doesn't accept GNU-like long options when it doesn't need arguments", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:flag("-q", "--quiet") assert.has_error(curry(parser.parse, parser, {"--quiet=very_quiet"}), "option --quiet doesn't take arguments") end) it("handles too many invocations correctly", function() - local parser = largparse.parser() + local parser = argparse.parser() parser:flag("-q", "--quiet", { count = 1, no_overwrite = true diff --git a/spec/utils_spec.lua b/spec/utils_spec.lua index f3d1351..bb70de7 100644 --- a/spec/utils_spec.lua +++ b/spec/utils_spec.lua @@ -1,4 +1,4 @@ -local utils = require "largparse.utils" +local utils = require "argparse.utils" describe("tests related to utils.parse_boundaries", function() it("handles * correctly", function() diff --git a/src/largparse.lua b/src/argparse.lua similarity index 97% rename from src/largparse.lua rename to src/argparse.lua index 685e974..c2fece2 100644 --- a/src/largparse.lua +++ b/src/argparse.lua @@ -1,9 +1,9 @@ -local largparse = {} +local argparse = {} local class = require "30log" -local State = require "largparse.state" -local utils = require "largparse.utils" +local State = require "argparse.state" +local utils = require "argparse.utils" local Parser = class() @@ -262,6 +262,6 @@ function Parser:parse(args) return result end -largparse.parser = Parser +argparse.parser = Parser -return largparse +return argparse diff --git a/test/test.lua b/test/test.lua deleted file mode 100644 index 9f61ee1..0000000 --- a/test/test.lua +++ /dev/null @@ -1,21 +0,0 @@ -local largparse = require "largparse" -local serpent = require "serpent" - -local parser = largparse.parser() - -parser:argument("input", { - args = 2 -}) - -parser:mutually_exclusive( - parser:flag("-q", "--quiet"), - parser:option("-s", "--server") -) - -local run = parser:command "run" - -run:flag("-f", "--fast") - -local args = parser:parse() - -print(serpent.block(args))