Exemple #1
0
def main(path, verify=False, format='json'):
    code = 0

    try:
        if path.endswith('.pkg.tar.gz'):
            f = GzipFile(path)
        elif path.endswith('.pkg.tar.xz'):
            f = LZMAFile(path)
        else:
            print >> sys.stderr, path, 'does not look like a package file.'
            return 1

        f = TarFile(fileobj=f)
        while True:
            info = f.next()
            if info.name == '.PKGINFO':
                break
        else:
            print >> sys.stderr, path, 'does not contain .PKGINFO'
            return 1

        if verify:
            try:
                f._load()
            except IOError:
                print >> sys.stderr, 'failed to verify', path
                code = 2

        ret = {}
        for line in f.extractfile(info).readlines():
            line = line.strip()
            if not line or line.startswith('#'):
                continue
            if format in ('json',):
                key, value = map(str.strip, line.split('=', 1))
                if key in ret:
                    if isinstance(ret[key], list):
                        ret[key].append(value)
                    else:
                        ret[key] = [ret[key], value]
                else:
                    ret[key] = value
            else:
                print line

        if format in ('json',):
            print ujson.dumps(ret)
    except IOError:
        print >> sys.stderr, path, 'is not a valid package file.'
        return 1
    else:
        return code