libs/ipkg: simplify parsing logic to take advantage of the opkg improvements in trunk, introduce find() operation

This commit is contained in:
Jo-Philipp Wich 2012-11-15 20:59:03 +00:00
parent 7933cad0fa
commit e3bb15012b

View file

@ -10,7 +10,6 @@ You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
$Id$
]]--
local os = require "os"
@ -23,7 +22,7 @@ local pairs = pairs
local error = error
local table = table
local ipkg = "opkg --force-removal-of-dependent-packages --force-overwrite"
local ipkg = "opkg --force-removal-of-dependent-packages --force-overwrite --nocase"
local icfg = "/etc/opkg.conf"
--- LuCI OPKG call abstraction library
@ -159,7 +158,7 @@ end
-- List helper
function _list(action, pat, cb)
local fd = io.popen(ipkg .. " " .. action ..
(pat and (" '%s'" % pat:gsub("'", "")) or "")) -- .. " | grep -vE '^ '")
(pat and (" '%s'" % pat:gsub("'", "")) or ""))
if fd then
local name, version, desc
@ -167,20 +166,18 @@ function _list(action, pat, cb)
local line = fd:read("*l")
if not line then break end
if line:sub(1,1) ~= " " then
name, version, desc = line:match("^(.-) %- (.-) %- (.+)")
name, version, desc = line:match("^(.-) %- (.-) %- (.+)")
if not name then
name, version = line:match("^(.-) %- (.+)")
desc = ""
end
cb(name, version, desc)
name = nil
version = nil
desc = nil
if not name then
name, version = line:match("^(.-) %- (.+)")
desc = ""
end
cb(name, version, desc)
name = nil
version = nil
desc = nil
end
fd:close()
@ -203,6 +200,15 @@ function list_installed(pat, cb)
_list("list_installed", pat, cb)
end
--- Find packages that match the given pattern.
-- @param pat Find packages whose names or descriptions match this pattern, nil results in zero results
-- @param cb Callback function invoked for each patckage, receives name, version and description as arguments
-- @return nothing
function find(pat, cb)
_list("find", pat, cb)
end
--- Determines the overlay root used by opkg.
-- @return String containing the directory path of the overlay root.
function overlay_root()