#!/usr/bin/env python3
import sys
import re

def parse_packages_file(file_path, ignore_list=[], ignore_ids=[]):
    with open(file_path, 'r') as file:
        contents = file.read().strip()
        entries = contents.split("\n\n")
        for entry in entries:
            inline = re.sub(r'\n ', ' ', entry)
            package_match = re.search(r'^Package: (\S*)', inline)
            if package_match is None:
                raise Exception("Field `Package` not found")
            package = package_match.group(1)

            if package in ignore_list:
                continue

            summary = f"{package} system package"
            description_match = re.search(r'Description: (.*)$', inline)

            packageid = f"ru.astralinux.apt.{package}"
            if packageid in ignore_ids:
                continue
            ignore_ids.append(packageid)
            print("---")
            print(f"ID: ru.astralinux.apt.{package}")
            print("Type: console-application")
            print(f"Package: {package}")
            print(f"Name:\n  C: {package}")
            print("Categories:\n- SystemPackages")
            print(f"Summary:\n  C: >\n    {summary.strip()}")
            if description_match is not None:
                description = description_match.group(1).replace("<", "(").replace(">",")").replace("&", "&amp;")
                formatted_description =  '    \n'.join(map(lambda x: x.strip(), description.strip().split('\n')))
                print(f"Description:\n  C: >\n    {formatted_description}")

if __name__ == '__main__':
    fnames = sys.argv[1:]
    ignore_list = []
    ignore_ids = []
    try:
        ignore_file = open('/usr/share/discover-data/ignore')
    except FileNotFoundError:
        pass
    else:
        with ignore_file:
            ignore_list = ignore_file.read().strip().split("\n")
    print("""---
File: DEP-11
Version: '1.0'
Origin: astra
Time: 20250205T163500""")
    for fname in fnames:
        parse_packages_file(fname, ignore_list, ignore_ids)
