libs/lpk: Initial CLI
[project/luci.git] / libs / lpk / luasrc / lpk / util.lua
index d398094..50b33e1 100644 (file)
@@ -1,37 +1,39 @@
 module("luci.lpk.util", package.seeall)
 
 function getopt( arg, options )
+       options = options or ""
        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
+               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 ]
+                                               arg[ k + 1 ] = ""
+                                       end
                                else
-                                       tab[ jopt ] = arg[ k + 1 ]
+                                       tab[ jopt ] = true
                                end
-                       else
-                               tab[ jopt ] = true
+                               y = y + 1
                        end
-                       y = y + 1
-               end
-    else 
-       table.insert(args, v)
-    end
-  end
-  return tab, args
+           elseif #v > 0 then
+               table.insert(args, v)
+           end
+       end
+       return tab, args
 end
\ No newline at end of file