libs/lpk: Updated CLI
authorSteven Barth <steven@midlink.org>
Tue, 29 Jul 2008 16:24:24 +0000 (16:24 +0000)
committerSteven Barth <steven@midlink.org>
Tue, 29 Jul 2008 16:24:24 +0000 (16:24 +0000)
libs/lpk/luasrc/lpk.lua
libs/lpk/luasrc/lpk/core.lua
libs/lpk/luasrc/lpk/util.lua

index 56f62f0..3b42a36 100644 (file)
@@ -6,12 +6,11 @@ __appname__ = "LuCI »lpk« Package Manager"
 __version__ = "0.1"
 __authors__ = "Steven Barth, Jo-Philipp Wich"
 __cpyrght__ = string.format("Copyright (c) 2008 %s", __authors__)
 __version__ = "0.1"
 __authors__ = "Steven Barth, Jo-Philipp Wich"
 __cpyrght__ = string.format("Copyright (c) 2008 %s", __authors__)
-__welcome__ = string.format("%s v%s\n%s",
- __appname__, __version__, __cpyrght__)
  
 
 options, arguments = luci.lpk.util.getopt(arg)
  
 
 options, arguments = luci.lpk.util.getopt(arg)
-config = luci.util.dtable()
+config  = luci.util.dtable()
+machine = luci.lpk.core.Machine()
 
 local cfgdump = loadfile("/etc/lpk.conf")
 if cfgdump then
 
 local cfgdump = loadfile("/etc/lpk.conf")
 if cfgdump then
@@ -20,23 +19,22 @@ if cfgdump then
 end
 
 if #arguments < 1 then
 end
 
 if #arguments < 1 then
-       print(__welcome__)
-       print([[
-       
-Usage:
- lpk [options] <command> [arguments]
- lpk [options] install|remove pkg1 [pkg2] [...] [pkgn]
-
-Commands:
- install       -       Install packages
- remove                -       Remove packages
- purge         -       Remove packages and their configuration files
-Options:
- --force-depends       -       Ignore unresolvable dependencies
-]])
+       luci.lpk.util.splash()
 else
 else
-       -- Start machine
+       local task, error = machine:task(table.remove(arguments, 1),
+        unpack(arguments))
+               
+       if task then
+               local stat, error = task:perform()
+               if not stat then
+                       luci.util.perror(error or task.register.errstr or "Unknown Error")
+                       os.exit(task.register.error or 1)
+               end
+       else
+               luci.util.perror(error .. "\n")
+               luci.lpk.util.splash()
+               os.exit(1)
+       end             
 end
 
 
 end
 
 
index 2ba5bfd..bef5651 100644 (file)
@@ -68,9 +68,12 @@ function Task.perform(self)
                        stat, err = self:rollback()
                until not stat
                
                        stat, err = self:rollback()
                until not stat
                
-               assert(not err, "Machine broken!")
+               if err then
+                       self.register.errstr = err
+                       self.register.error = 2
+               end
                
                
-               return false, self.register.error
+               return false
        end     
 end
 
        end     
 end
 
@@ -89,15 +92,11 @@ end
 function Machine.task(self, name, ...)
        local start = self:state(name)
        
 function Machine.task(self, name, ...)
        local start = self:state(name)
        
-       if not start or not start.entry then
-               error("No such command: " .. name)
+       if type(start) ~= "table" or not start.entry then
+               return false, "No such command: " .. name
        end
        
        local register = {}
        
        end
        
        local register = {}
        
-       if start:entry(register) then
-               return Task(self, register, start)
-       else
-               return nil, register.error
-       end
+       return start:entry(register) and Task(self, register, start)
 end 
 end 
index 50b33e1..95bdb96 100644 (file)
@@ -36,4 +36,24 @@ function getopt( arg, options )
            end
        end
        return tab, args
            end
        end
        return tab, args
+end
+
+function splash()
+       require("luci.lpk")
+       luci.util.perror(string.format("%s v%s\n%s",
+        luci.lpk.__appname__, luci.lpk.__version__, luci.lpk.__cpyrght__))
+       luci.util.perror([[
+       
+Usage:
+ lpk [options] <command> [arguments]
+ lpk [options] install|remove pkg1 [pkg2] [...] [pkgn]
+
+Commands:
+ install       -       Install packages
+ remove                -       Remove packages
+ purge         -       Remove packages and their configuration files
+Options:
+ --force-depends       -       Ignore unresolvable dependencies
+]])
 end
\ No newline at end of file
 end
\ No newline at end of file