#!/usr/bin/python3

import os
import sys


class Package:

    def __init__(self, name, version):
        self.name = name
        self.version = version


class Release:

    def __init__(self, name):
        self.name = name
        self.packages = []
        self.package_names = []
        self.specific_names = []

if len(sys.argv) != 3:
    print("")
    print("Usage: mint-search-manifests package main|all")
    print("")
    sys.exit(1)

keyword = sys.argv[1]
scope = sys.argv[2]
scoped_version = None
if scope == "debian":
    manifests = ["debian", "lmde"]
elif scope == "main":
    manifests = ["ubuntu", "mint"]
elif scope == "all":
    manifests = ["debian", "lmde", "ubuntu", "mint", "elementary", "kubuntu", "xubuntu", "zorin"]
else:
    scoped_version = scope

for path in sorted(os.listdir("/usr/share/mint-dev-tools/manifests")):
    release = Release(path)
    release_prefix = release.name.split("-")[0]
    if scoped_version is not None:
        if release.name != scoped_version:
            continue
    else:
        if release_prefix not in manifests:
            continue
    for manifest in ["/usr/share/mint-dev-tools/manifests/%s/filesystem.manifest" % release.name,
                     "/usr/share/mint-dev-tools/manifests/%s/filesystem.packages" % release.name]:
        if os.path.exists(manifest):
            with open(manifest, 'r') as manifest_file:
                for line in manifest_file:
                    line = line.strip()
                    if line.startswith('#'):
                        continue
                    line = line.split()
                    if len(line) == 2:
                        (package_name, package_version) = line

                    if keyword in package_name:
                        #package_name = package_name.split(":amd64")[0]
                        #package_name = package_name.split("-lts-")[0]
                        package = Package(package_name, package_version)
                        release.packages.append(package)
                        release.package_names.append(package_name)
            break

    if len(release.packages) > 0:
        print("-----------------------------------------------------------------------------------------------------")
        for package in release.packages:
            print("{:<30} {:<50} {:<32}".format(release.name, package.name, package.version))
