|
|
-- --- SDE-COPYRIGHT-NOTE-BEGIN --- -- This copyright note is auto-generated by ./scripts/Create-CopyPatch. -- -- Filename: lib/lua/sde/pkgdb.lua -- Copyright (C) 2008 The OpenSDE Project -- Copyright (C) 2005 - 2006 The T2 SDE Project -- Copyright (C) 2005 - 2006 Valentin Ziegler, Juergen "George" Sawinski -- -- More information can be found in the files COPYING and README. -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; version 2 of the License. A copy of the -- GNU General Public License can be found in the file COPYING. -- --- SDE-COPYRIGHT-NOTE-END ---
-- TODO: -- - add "update-priority" (like "urgent,security,normal" etc) -- (also needs to go into create_package_db and other places)
-- DESCRIPTION: -- p = pkgdb.parse(line-iterator) -- Parse the package.db (takes a line iterator as input)
require "sde/desc"
-- parse all packages.db information into tables -- filelist saving commented out (eats another 30M)
local function block_lines() local line = lines()
if (line == nil) or (line=="\023") then return nil end
return line end
local function read_deps() local deps={}
for line in block_lines do _,_,dependency = string.find(line, "[^ ]* (.*)") table.insert (deps, dependency) end
return deps end
local function read_flist() local files={} local cksums={} local sizes={} local usage=0
for line in block_lines do _,_,cksum,size,file = string.find(line, "^([0-9]+) ([0-9]+) (.*)") -- uncomment these lines if you want to save complete file list -- table.insert (files, file); -- table.insert (cksums, 1 * cksum); -- table.insert (sizes, 1 * size); usage = usage + size end
return usage,files,cksums,sizes end
local function parse(lines) packages = {}
repeat -- parse packages pkgname = lines()
if pkgname then print(pkgname) local pkg_data = {}
if lines() ~= "\023" then -- separator line print ("terminating line missing\n") end
pkg_data.desc = desc.parse (block_lines) pkg_data.deps = read_deps () pkg_data.usage = read_flist ()
if lines() ~= "\004" then -- separator line print ("terminating line missing\n") end
packages[pkgname] = pkg_data end until pkgname == nil
return packages end
|