﻿import os
import shutil


class PathPattern:
    def __init__(self, source, target):
        self.sourcePath = source
        self.targetPath = target

pathPatterns = []


def collectLanguages(rootPath):
    langCodes = set()

    for pattern in pathPatterns:
        path = os.path.join(rootPath, pattern.sourcePath)

        for dirname, folders, files in os.walk(path):
            for fileName in files:
                if fileName.endswith(".po"):
                    langPos = fileName.rfind('-')
                    if langPos != -1:
                        langCode = fileName[langPos + 1:len(fileName)- 3]
                        langCodes.add(langCode)
    return langCodes


def copyFilesL(sourceRoot, targetRoot, sourceEnding, targetEnding):
    for directory, folders, files in os.walk(sourceRoot):
        if len(files) == 0:
            continue

        # last directory is the po file name
        sourceDir = os.path.dirname(directory)
        targetDir = os.path.join(targetRoot, os.path.relpath(sourceDir, sourceRoot))
        targetName = os.path.basename(directory) + targetEnding

        for sourceName in files:
            if sourceName.endswith(sourceEnding):

                if (not os.path.exists(targetDir)):
                    os.makedirs(targetDir)
                shutil.copyfile(os.path.join(directory, sourceName), os.path.join(targetDir, targetName))


def copyFiles(sourceRoot, targetRoot, languages):
    for language in languages:
        langDir = os.path.join(targetRoot, language)
        if not os.path.exists(langDir):
            os.makedirs(langDir)

        for pattern in pathPatterns:
            sourcePath = os.path.join(sourceRoot, pattern.sourcePath)
            targetPath = os.path.join(langDir, pattern.targetPath)
            sourceEnding = "-"+language + ".po"
            targetEnding = ".po"
            copyFilesL(sourcePath, targetPath, sourceEnding, targetEnding)



pathPatterns.append(PathPattern("debian/l10n/po","."))
sourceFolder = os.path.join(os.getcwd(), "launchpad-PO")
targetFolder = os.path.join(os.getcwd(), "PO")
languages = collectLanguages(sourceFolder)
#languages = ["lv", "lt"]

if (os.path.exists(targetFolder)):
    shutil.rmtree(targetFolder)

copyFiles(sourceFolder, targetFolder, languages)
