import tarfile
import glob
import json
import hashlib

packages = {}

for msk in glob.glob('*.msk'):
    print("Indexing {msk}...".format(msk=msk))
    sha = hashlib.sha512()
    with open(msk,'rb') as f:
        for block in iter(lambda: f.read(65536),b''):
            sha.update(block)
    with tarfile.open(msk,'r:gz') as package:
        manifest_inf = package.getmember('manifest.json')
        manifest_br  = package.extractfile(manifest_inf)
        manifest_str = manifest_br.read()

        manifest = json.loads(manifest_str)
        packages[manifest['package']] = {
            'file': msk,
            'version': manifest['version'],
            'description': manifest['description'],
            'friendly-name': manifest['friendly-name'],
            'checksum': sha.hexdigest(),
            'depends': manifest['depends'] if 'depends' in manifest else [],
            'icon': manifest['icon'] if 'icon' in manifest else None,
        }

with open('manifest.json','w') as f:
    f.write(json.dumps(packages))

