#!/usr/bin/python3

import configparser
import os
import sys

ARCHES = ['x86_64', 'ppc64le', 'aarch64']


def fixit(path):
    for arch in ARCHES:

        # Read in the treeinfo file from disk
        with open(os.path.join(path, f'BaseOS/{arch}/os/.treeinfo')) as tinfofile:
            config = configparser.ConfigParser()
            config.read_file(tinfofile)

        # Link the Appstream repo in to the treeinfo so that it is available when installing using BaseOS the repo
        config.add_section('variant-AppStream')
        config.set('variant-AppStream', 'id', 'AppStream')
        config.set('variant-AppStream', 'name', 'AppStream')
        config.set('variant-AppStream', 'packages', f'../../../AppStream/{arch}/os/Packages')
        config.set('variant-AppStream', 'repository', f'../../../AppStream/{arch}/os/')
        config.set('variant-AppStream', 'type', 'variant')
        config.set('variant-AppStream', 'uid', 'AppStream')

        config.set('tree', 'variants', 'BaseOS,AppStream')

        # Write the new treeinfo back to disk
        with open(os.path.join(path, f'BaseOS/{arch}/os/.treeinfo'), 'w') as tinfofile:
            config.write(tinfofile)


def help():
    print("usage: fix_treeinfos /path/to/staged/distro")
    sys.exit(1)


if __name__ == '__main__':
    if len(sys.argv) < 2:
        help()

    fixit(sys.argv[1])