luci/lpk: Initial commit
[project/luci.git] / libs / lpk / luasrc / lpk.lua
diff --git a/libs/lpk/luasrc/lpk.lua b/libs/lpk/luasrc/lpk.lua
new file mode 100644 (file)
index 0000000..fc22354
--- /dev/null
@@ -0,0 +1,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
+