libs/ipkg: simplify parsing logic to take advantage of the opkg improvements in trunk, introduce find() operation
This commit is contained in:
parent
7933cad0fa
commit
e3bb15012b
1 changed files with 21 additions and 15 deletions
|
@ -10,7 +10,6 @@ You may obtain a copy of the License at
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
$Id$
|
|
||||||
]]--
|
]]--
|
||||||
|
|
||||||
local os = require "os"
|
local os = require "os"
|
||||||
|
@ -23,7 +22,7 @@ local pairs = pairs
|
||||||
local error = error
|
local error = error
|
||||||
local table = table
|
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"
|
local icfg = "/etc/opkg.conf"
|
||||||
|
|
||||||
--- LuCI OPKG call abstraction library
|
--- LuCI OPKG call abstraction library
|
||||||
|
@ -159,7 +158,7 @@ end
|
||||||
-- List helper
|
-- List helper
|
||||||
function _list(action, pat, cb)
|
function _list(action, pat, cb)
|
||||||
local fd = io.popen(ipkg .. " " .. action ..
|
local fd = io.popen(ipkg .. " " .. action ..
|
||||||
(pat and (" '%s'" % pat:gsub("'", "")) or "")) -- .. " | grep -vE '^ '")
|
(pat and (" '%s'" % pat:gsub("'", "")) or ""))
|
||||||
|
|
||||||
if fd then
|
if fd then
|
||||||
local name, version, desc
|
local name, version, desc
|
||||||
|
@ -167,20 +166,18 @@ function _list(action, pat, cb)
|
||||||
local line = fd:read("*l")
|
local line = fd:read("*l")
|
||||||
if not line then break end
|
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
|
if not name then
|
||||||
name, version = line:match("^(.-) %- (.+)")
|
name, version = line:match("^(.-) %- (.+)")
|
||||||
desc = ""
|
desc = ""
|
||||||
end
|
|
||||||
|
|
||||||
cb(name, version, desc)
|
|
||||||
|
|
||||||
name = nil
|
|
||||||
version = nil
|
|
||||||
desc = nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
cb(name, version, desc)
|
||||||
|
|
||||||
|
name = nil
|
||||||
|
version = nil
|
||||||
|
desc = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
fd:close()
|
fd:close()
|
||||||
|
@ -203,6 +200,15 @@ function list_installed(pat, cb)
|
||||||
_list("list_installed", pat, cb)
|
_list("list_installed", pat, cb)
|
||||||
end
|
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.
|
--- Determines the overlay root used by opkg.
|
||||||
-- @return String containing the directory path of the overlay root.
|
-- @return String containing the directory path of the overlay root.
|
||||||
function overlay_root()
|
function overlay_root()
|
||||||
|
|
Loading…
Reference in a new issue