Outsourced IPKG abstraction to own directory
authorSteven Barth <steven@midlink.org>
Wed, 6 Aug 2008 19:51:48 +0000 (19:51 +0000)
committerSteven Barth <steven@midlink.org>
Wed, 6 Aug 2008 19:51:48 +0000 (19:51 +0000)
contrib/package/luci/Makefile
libs/core/luasrc/model/ipkg.lua [deleted file]
libs/ipkg/luasrc/model/ipkg.lua [new file with mode: 0644]

index 4dff5a7b512f4cda8f1457e81e9d00fa9a44e1b5..edd8949d0a15132d768516d96963008e6427e086 100644 (file)
@@ -177,6 +177,16 @@ define Package/luci-http/install
 endef
 
 
+define Package/luci-ipkg
+  $(call Package/luci/libtemplate)
+  TITLE:=LuCI IPKG/OPKG call abstraction library 
+endef
+
+define Package/luci-ipkg/install
+       $(call Package/luci/install/template,$(1),libs/ipkg)
+endef
+
+
 define Package/luci-web
   $(call Package/luci/libtemplate)
   DEPENDS+=+luci-http +luci-addons +luci-uci +luci-sgi-cgi
@@ -314,7 +324,7 @@ endef
 
 define Package/luci-admin-full
   $(call Package/luci/webtemplate)
-  DEPENDS+=+luci-admin-core
+  DEPENDS+=+luci-admin-core +luci-ipkg
   TITLE:=LuCI Administration - power user's interface
 endef
 
@@ -544,6 +554,9 @@ endif
 ifneq ($(CONFIG_PACKAGE_luci-http),)
        PKG_SELECTED_MODULES+=libs/http
 endif
+ifneq ($(CONFIG_PACKAGE_luci-ipkg),)
+       PKG_SELECTED_MODULES+=libs/ipkg
+endif
 ifneq ($(CONFIG_PACKAGE_luci-uci),)
        PKG_SELECTED_MODULES+=libs/uci
 endif
@@ -653,6 +666,7 @@ $(eval $(call BuildPackage,luci-core))
 $(eval $(call BuildPackage,luci-cbi))
 $(eval $(call BuildPackage,luci-fastindex))
 $(eval $(call BuildPackage,luci-http))
+$(eval $(call BuildPackage,luci-ipkg))
 $(eval $(call BuildPackage,luci-uci))
 $(eval $(call BuildPackage,luci-web))
 
diff --git a/libs/core/luasrc/model/ipkg.lua b/libs/core/luasrc/model/ipkg.lua
deleted file mode 100644 (file)
index 075acc4..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
---[[
-LuCI - IPKG wrapper library
-
-Description:
-Wrapper for the ipkg Package manager
-
-Any return value of false or nil can be interpreted as an error
-
-FileId:
-$Id$
-
-License:
-Copyright 2008 Steven Barth <steven@midlink.org>
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at 
-
-       http://www.apache.org/licenses/LICENSE-2.0 
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-]]--
-module("luci.model.ipkg", package.seeall)
-require("luci.sys")
-require("luci.util")
-require("luci.fs")
-
-ipkg = luci.fs.access("/bin/opkg") and "opkg" or "ipkg"
-
--- Returns repository information
-function info(pkg)
-       return _lookup("info", pkg)
-end
-
--- Returns a table with status information
-function status(pkg)
-       return _lookup("status", pkg)
-end
-
--- Installs packages
-function install(...)
-       return _action("install", ...)
-end
-
--- Returns whether a package is installed
-function installed(pkg, ...)
-       local p = status(...)[pkg]
-       return (p and p.Status and p.Status.installed)
-end
-
--- Removes packages
-function remove(...)
-       return _action("remove", ...)
-end
-
--- Updates package lists
-function update()
-       return _action("update")
-end
-
--- Upgrades installed packages
-function upgrade()
-       return _action("upgrade")
-end
-
-
--- Internal action function
-function _action(cmd, ...)
-       local pkg = ""
-       arg.n = nil
-       for k, v in pairs(arg) do
-               pkg = pkg .. " '" .. v:gsub("'", "") .. "'"
-       end
-       
-       local c = ipkg.." "..cmd.." "..pkg.." >/dev/null 2>&1"
-       local r = os.execute(c)
-       return (r == 0), r      
-end
-
--- Internal lookup function
-function _lookup(act, pkg)
-       local cmd = ipkg .. " " .. act
-       if pkg then
-               cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'"
-       end
-       
-       return _parselist(luci.sys.exec(cmd .. " 2>/dev/null"))
-end
-
--- Internal parser function
-function _parselist(rawdata)   
-       if type(rawdata) ~= "string" then
-               error("IPKG: Invalid rawdata given")
-       end
-       
-       rawdata = luci.util.split(rawdata) 
-       local data = {}
-       local c = {}
-       local l = nil
-       
-       for k, line in pairs(rawdata) do
-               if line:sub(1, 1) ~= " " then
-                       local split = luci.util.split(line, ":", 1)
-                       local key = nil
-                       local val = nil
-                       
-                       if split[1] then
-                               key = luci.util.trim(split[1])
-                       end
-                       
-                       if split[2] then
-                               val = luci.util.trim(split[2])
-                       end
-                       
-                       if key and val then
-                               if key == "Package" then
-                                       c = {Package = val}
-                                       data[val] = c
-                               elseif key == "Status" then
-                                       c.Status = {}
-                                       for i, j in pairs(luci.util.split(val, " ")) do
-                                               c.Status[j] = true
-                                       end
-                               else
-                                       c[key] = val
-                               end
-                               l = key
-                       end
-               else
-                       -- Multi-line field
-                       c[l] = c[l] .. "\n" .. line:sub(2)
-               end
-       end
-       
-       return data
-end
\ No newline at end of file
diff --git a/libs/ipkg/luasrc/model/ipkg.lua b/libs/ipkg/luasrc/model/ipkg.lua
new file mode 100644 (file)
index 0000000..075acc4
--- /dev/null
@@ -0,0 +1,141 @@
+--[[
+LuCI - IPKG wrapper library
+
+Description:
+Wrapper for the ipkg Package manager
+
+Any return value of false or nil can be interpreted as an error
+
+FileId:
+$Id$
+
+License:
+Copyright 2008 Steven Barth <steven@midlink.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at 
+
+       http://www.apache.org/licenses/LICENSE-2.0 
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+module("luci.model.ipkg", package.seeall)
+require("luci.sys")
+require("luci.util")
+require("luci.fs")
+
+ipkg = luci.fs.access("/bin/opkg") and "opkg" or "ipkg"
+
+-- Returns repository information
+function info(pkg)
+       return _lookup("info", pkg)
+end
+
+-- Returns a table with status information
+function status(pkg)
+       return _lookup("status", pkg)
+end
+
+-- Installs packages
+function install(...)
+       return _action("install", ...)
+end
+
+-- Returns whether a package is installed
+function installed(pkg, ...)
+       local p = status(...)[pkg]
+       return (p and p.Status and p.Status.installed)
+end
+
+-- Removes packages
+function remove(...)
+       return _action("remove", ...)
+end
+
+-- Updates package lists
+function update()
+       return _action("update")
+end
+
+-- Upgrades installed packages
+function upgrade()
+       return _action("upgrade")
+end
+
+
+-- Internal action function
+function _action(cmd, ...)
+       local pkg = ""
+       arg.n = nil
+       for k, v in pairs(arg) do
+               pkg = pkg .. " '" .. v:gsub("'", "") .. "'"
+       end
+       
+       local c = ipkg.." "..cmd.." "..pkg.." >/dev/null 2>&1"
+       local r = os.execute(c)
+       return (r == 0), r      
+end
+
+-- Internal lookup function
+function _lookup(act, pkg)
+       local cmd = ipkg .. " " .. act
+       if pkg then
+               cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'"
+       end
+       
+       return _parselist(luci.sys.exec(cmd .. " 2>/dev/null"))
+end
+
+-- Internal parser function
+function _parselist(rawdata)   
+       if type(rawdata) ~= "string" then
+               error("IPKG: Invalid rawdata given")
+       end
+       
+       rawdata = luci.util.split(rawdata) 
+       local data = {}
+       local c = {}
+       local l = nil
+       
+       for k, line in pairs(rawdata) do
+               if line:sub(1, 1) ~= " " then
+                       local split = luci.util.split(line, ":", 1)
+                       local key = nil
+                       local val = nil
+                       
+                       if split[1] then
+                               key = luci.util.trim(split[1])
+                       end
+                       
+                       if split[2] then
+                               val = luci.util.trim(split[2])
+                       end
+                       
+                       if key and val then
+                               if key == "Package" then
+                                       c = {Package = val}
+                                       data[val] = c
+                               elseif key == "Status" then
+                                       c.Status = {}
+                                       for i, j in pairs(luci.util.split(val, " ")) do
+                                               c.Status[j] = true
+                                       end
+                               else
+                                       c[key] = val
+                               end
+                               l = key
+                       end
+               else
+                       -- Multi-line field
+                       c[l] = c[l] .. "\n" .. line:sub(2)
+               end
+       end
+       
+       return data
+end
\ No newline at end of file