diff options
-rwxr-xr-x | alt_getopt.lua | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/alt_getopt.lua b/alt_getopt.lua deleted file mode 100755 index 7a6591a..0000000 --- a/alt_getopt.lua +++ /dev/null @@ -1,166 +0,0 @@ --- Copyright (c) 2009 Aleksey Cheusov <vle@gmx.net> --- --- Permission is hereby granted, free of charge, to any person obtaining --- a copy of this software and associated documentation files (the --- "Software"), to deal in the Software without restriction, including --- without limitation the rights to use, copy, modify, merge, publish, --- distribute, sublicense, and/or sell copies of the Software, and to --- permit persons to whom the Software is furnished to do so, subject to --- the following conditions: --- --- The above copyright notice and this permission notice shall be --- included in all copies or substantial portions of the Software. --- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, --- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND --- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE --- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION --- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION --- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -local type, pairs, ipairs, io, os = type, pairs, ipairs, io, os - -module ("alt_getopt") - -local function convert_short2long (opts) - local i = 1 - local len = #opts - local ret = {} - - for short_opt, accept_arg in opts:gmatch("(%w)(:?)") do - ret[short_opt]=#accept_arg - end - - return ret -end - -local function exit_with_error (msg, exit_status) - io.stderr:write (msg) - os.exit (exit_status) -end - -local function err_unknown_opt (opt) - exit_with_error ("Unknown option `-" .. - (#opt > 1 and "-" or "") .. opt .. "'\n", 1) -end - -local function canonize (options, opt) - if not options [opt] then - err_unknown_opt (opt) - end - - while type (options [opt]) == "string" do - opt = options [opt] - - if not options [opt] then - err_unknown_opt (opt) - end - end - - return opt -end - -function get_ordered_opts (arg, sh_opts, long_opts) - local i = 1 - local count = 1 - local opts = {} - local optarg = {} - - local options = convert_short2long (sh_opts) - for k,v in pairs (long_opts) do - options [k] = v - end - - while i <= #arg do - local a = arg [i] - - if a == "--" then - i = i + 1 - break - - elseif a == "-" then - break - - elseif a:sub (1, 2) == "--" then - local pos = a:find ("=", 1, true) - - if pos then - local opt = a:sub (3, pos-1) - - opt = canonize (options, opt) - - if options [opt] == 0 then - exit_with_error ("Bad usage of option `" .. a .. "'\n", 1) - end - - optarg [count] = a:sub (pos+1) - opts [count] = opt - else - local opt = a:sub (3) - - opt = canonize (options, opt) - - if options [opt] == 0 then - opts [count] = opt - else - if i == #arg then - exit_with_error ("Missed value for option `" .. a .. "'\n", 1) - end - - optarg [count] = arg [i+1] - opts [count] = opt - i = i + 1 - end - end - count = count + 1 - - elseif a:sub (1, 1) == "-" then - local j - for j=2,a:len () do - local opt = canonize (options, a:sub (j, j)) - - if options [opt] == 0 then - opts [count] = opt - count = count + 1 - elseif a:len () == j then - if i == #arg then - exit_with_error ("Missed value for option `-" .. opt .. "'\n", 1) - end - - optarg [count] = arg [i+1] - opts [count] = opt - i = i + 1 - count = count + 1 - break - else - optarg [count] = a:sub (j+1) - opts [count] = opt - count = count + 1 - break - end - end - else - break - end - - i = i + 1 - end - - return opts,i,optarg -end - -function get_opts (arg, sh_opts, long_opts) - local ret = {} - - local opts,optind,optarg = get_ordered_opts (arg, sh_opts, long_opts) - for i,v in ipairs (opts) do - if optarg [i] then - ret [v] = optarg [i] - else - ret [v] = 1 - end - end - - return ret,optind -end |