diff options
author | Steven Barth <steven@midlink.org> | 2008-08-06 19:51:48 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-08-06 19:51:48 +0000 |
commit | b1b0c085de7483c5a778f0056a97da14e87b7f16 (patch) | |
tree | 1d18ac7454b047f4786edd95980060132cbe7c88 /libs/core | |
parent | 66ab2700d7e904a518bc0f340f179998a3f76773 (diff) |
Outsourced IPKG abstraction to own directory
Diffstat (limited to 'libs/core')
-rw-r--r-- | libs/core/luasrc/model/ipkg.lua | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/libs/core/luasrc/model/ipkg.lua b/libs/core/luasrc/model/ipkg.lua deleted file mode 100644 index 075acc4c3a..0000000000 --- a/libs/core/luasrc/model/ipkg.lua +++ /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 |