#!/usr/bin/python2.3

import cdd.Package
import cdd.PackageList

import os
import md5

import apt_pkg

def load_file(filename):
    print "Loading %s..." % filename
    try:
        parse_file_in = open(filename, 'r')
        parse_file = apt_pkg.ParseTagFile(parse_file_in)

        pkg_list = cdd.PackageList.PackageList()
        while parse_file.Step() == 1:
            pkg_list.add(cdd.Package.Package(parse_file.Section))

        return pkg_list

    except Exception, e:
        print 'ERROR:', e
        exit


packages = load_file('Packages')
translations = []
for translation_file in os.listdir('.'):
    if "Translation-" == translation_file[:12]:
        translations.append(load_file(translation_file))

merged = open('MergedTranslations', 'w')
merged_fuzzy = open('MergedTranslations_fuzzy', 'w')

for p in packages.keys():
    package_str = """
Package: %s
Description: %s
""" % (packages[p]["Package"], packages[p]["Description"])

    wrote = False
    wrote_fuzzy = False

    md5hash = md5.new()
    md5hash.update(packages[p]["Description"] + "\n")

    for t in translations:
        if t.has_key(p):
            if t[p]["Description-md5"] == md5hash.hexdigest():
                for f in t[p].keys():
                    if f != "Description-md5" and f[:12] == "Description-":
                        if not wrote:
                            merged.write(package_str)
                            wrote = True
                    
                        merged.write("%s: %s" % (f, t[p][f]))
            else:
                for f in t[p].keys():
                    if f != "Description-md5" and f[:12] == "Description-":
                        if not wrote_fuzzy:
                            merged_fuzzy.write(package_str)
                            wrote_fuzzy = True

                        merged_fuzzy.write("%s: %s" % (f, t[p][f]))
    if wrote:
        merged.write("\n")
    if wrote_fuzzy:
        merged_fuzzy.write("\n")
        
