summaryrefslogtreecommitdiffhomepage
path: root/libs/lpk/luasrc/lpk.lua
blob: fc2235458f9b8c4a314d54d651c693ce5c8725e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
module("luci.lpk", package.seeall)

function getopt( arg, options )
	local tab = {}
	local args = {}
	for k, v in ipairs(arg) do
	if v:sub(1, 2) == "--" then
		local x = v:find( "=", 1, true )
		if x then
			tab[ v:sub( 3, x-1 ) ] = v:sub( x+1 )
		else 
		    tab[ v:sub( 3 ) ] = true
		end
	elseif v:sub( 1, 1 ) == "-" then
		local y = 2
		local l = #v
		local jopt
		while ( y <= l ) do
			jopt = v:sub( y, y )
			if options:find( jopt, 1, true ) then
				if y < l then
					tab[ jopt ] = v:sub( y+1 )
					y = l
				else
					tab[ jopt ] = arg[ k + 1 ]
				end
			else
				tab[ jopt ] = true
			end
			y = y + 1
		end
    else 
    	table.insert(args, v)
    end
  end
  return tab, args
end