* Updated INSTALL file

This commit is contained in:
Steven Barth 2008-04-02 10:10:32 +00:00
parent 2f99795df6
commit f2fc9438a2
3 changed files with 94 additions and 4 deletions

View file

@ -35,8 +35,8 @@ TOC:
Prerequisites:
CGI enabled webserver
Lua 5.1.x or later
LuaFileSystem Lua extension
Haserl 0.9x or later with Lua support builtin
Luaposix Lua extension
Haserl 0.9.23 or later with Lua support builtin
Installation:
Use make to build a distribution of FFLuCI

View file

@ -27,3 +27,84 @@ limitations under the License.
]]--
module("ffluci.model.ipkg", package.seeall)
require("ffluci.sys")
require("ffluci.util")
ipkg = "ipkg"
local statuslist = nil
-- Returns repository information
function info(pkg)
-- To be implemented
end
-- Returns a table with status information
function status(refresh)
if not statuslist or refresh then
statuslist = _parselist(ffluci.sys.exec(ipkg .. " status"))
end
return statuslist
end
-- Installs a package
function install(pkg)
if not pkg then
return nil
end
local c = ipkg .. " install '" .. pkg:gsub("'", "") .. "' >/dev/null 2>&1"
local r = os.execute(c)
return (r == 0), r
end
function installed(pkg, ...)
local p = status(...)[pkg]
return (p and p.Status and p.Status.installed)
end
function _parselist(rawdata)
if type(rawdata) ~= "string" then
error("IPKG: Invalid rawdata given")
end
rawdata = ffluci.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 = ffluci.util.split(line, ":", 1)
local key = nil
local val = nil
if split[1] then
key = ffluci.util.trim(split[1])
end
if split[2] then
val = ffluci.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(ffluci.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

View file

@ -145,9 +145,10 @@ function sessionid()
end
-- Splits a string into an array (Taken from lua-users.org)
function split(str, pat)
-- Splits a string into an array (Adapted from lua-users.org)
function split(str, pat, max)
pat = pat or "\n"
max = max or -1
local t = {}
local fpat = "(.-)" .. pat
@ -155,10 +156,14 @@ function split(str, pat)
local s, e, cap = str:find(fpat, 1)
while s do
max = max - 1
if s ~= 1 or cap ~= "" then
table.insert(t,cap)
end
last_end = e+1
if max == 0 then
break
end
s, e, cap = str:find(fpat, last_end)
end
@ -170,6 +175,10 @@ function split(str, pat)
return t
end
-- Removes whitespace from beginning and end of a string
function trim (string)
return string:gsub("^%s*(.-)%s*$", "%1")
end
-- Updates given table with new values
function update(t, updates)