* indexing tool'unu implement et
This commit is contained in:
+5
-1
@@ -6,7 +6,7 @@ import sys
|
||||
from optparse import OptionParser
|
||||
|
||||
#sys.path.append("./lib")
|
||||
import pisi.install
|
||||
from pisi.index import Index
|
||||
import pisi.util
|
||||
from pisi.ui import ui
|
||||
|
||||
@@ -38,5 +38,9 @@ def main():
|
||||
|
||||
ui.info('* Building index of PISI files under ' + repo_dir + '\n')
|
||||
|
||||
index = Index()
|
||||
index.index(repo_dir)
|
||||
index.write('pisi-index.xml')
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
|
||||
from package import Package
|
||||
from xmlfile import XmlFile
|
||||
import metadata
|
||||
from ui import ui
|
||||
import util
|
||||
from config import config
|
||||
|
||||
class Index(XmlFile):
|
||||
|
||||
def __init__(self):
|
||||
XmlFile.__init__(self,"PISI")
|
||||
self.sources = []
|
||||
self.packages = []
|
||||
|
||||
def write(self, filename):
|
||||
"""Write index file"""
|
||||
self.newDOM()
|
||||
for pkg in self.packages:
|
||||
self.addChild(pkg.elt(self))
|
||||
self.writexml(filename)
|
||||
|
||||
def index(self, repo_dir):
|
||||
|
||||
import os
|
||||
from os.path import join, getsize
|
||||
for root, dirs, files in os.walk(repo_dir):
|
||||
for fn in files:
|
||||
if fn.endswith('.pisi'):
|
||||
ui.info('Adding ' + fn + ' to package index\n')
|
||||
self.add_package(join(root, fn))
|
||||
|
||||
def add_package(self, path):
|
||||
package = Package(path, 'r')
|
||||
# extract control files
|
||||
util.clean_dir(config.install_dir())
|
||||
package.extract_PISI_files(config.install_dir())
|
||||
|
||||
md = metadata.MetaData()
|
||||
md.read(config.install_dir() + '/metadata.xml')
|
||||
# check package semantics
|
||||
if md.verify():
|
||||
self.packages.append(md.package)
|
||||
else:
|
||||
ui.error('Package ' + fn + ' metadata corrupt\n')
|
||||
Reference in New Issue
Block a user