* 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: Prerequisites:
CGI enabled webserver CGI enabled webserver
Lua 5.1.x or later Lua 5.1.x or later
LuaFileSystem Lua extension Luaposix Lua extension
Haserl 0.9x or later with Lua support builtin Haserl 0.9.23 or later with Lua support builtin
Installation: Installation:
Use make to build a distribution of FFLuCI Use make to build a distribution of FFLuCI

View file

@ -27,3 +27,84 @@ limitations under the License.
]]-- ]]--
module("ffluci.model.ipkg", package.seeall) module("ffluci.model.ipkg", package.seeall)
require("ffluci.sys") 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 end
-- Splits a string into an array (Taken from lua-users.org) -- Splits a string into an array (Adapted from lua-users.org)
function split(str, pat) function split(str, pat, max)
pat = pat or "\n" pat = pat or "\n"
max = max or -1
local t = {} local t = {}
local fpat = "(.-)" .. pat local fpat = "(.-)" .. pat
@ -155,10 +156,14 @@ function split(str, pat)
local s, e, cap = str:find(fpat, 1) local s, e, cap = str:find(fpat, 1)
while s do while s do
max = max - 1
if s ~= 1 or cap ~= "" then if s ~= 1 or cap ~= "" then
table.insert(t,cap) table.insert(t,cap)
end end
last_end = e+1 last_end = e+1
if max == 0 then
break
end
s, e, cap = str:find(fpat, last_end) s, e, cap = str:find(fpat, last_end)
end end
@ -170,6 +175,10 @@ function split(str, pat)
return t return t
end 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 -- Updates given table with new values
function update(t, updates) function update(t, updates)