summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2012-11-15 20:59:03 +0000
committerJo-Philipp Wich <jow@openwrt.org>2012-11-15 20:59:03 +0000
commite3bb15012ba20801ca4a57d9d7ea989361117137 (patch)
tree62f7b8e1a295cb0b3553b2e93179d3b451f5a5e1
parent7933cad0fa05659bc347ecf2d604b6f5df07ff61 (diff)
libs/ipkg: simplify parsing logic to take advantage of the opkg improvements in trunk, introduce find() operation
-rw-r--r--libs/ipkg/luasrc/model/ipkg.lua34
1 files changed, 20 insertions, 14 deletions
diff --git a/libs/ipkg/luasrc/model/ipkg.lua b/libs/ipkg/luasrc/model/ipkg.lua
index d0d9788fd..c927e7116 100644
--- a/libs/ipkg/luasrc/model/ipkg.lua
+++ b/libs/ipkg/luasrc/model/ipkg.lua
@@ -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
+ if not name then
+ name, version = line:match("^(.-) %- (.+)")
+ desc = ""
+ end
- cb(name, version, desc)
+ cb(name, version, desc)
- name = nil
- version = nil
- desc = nil
- end
+ 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()