#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
This script walks over all po files in a given directory and its subfolders.
It fills all msgid strings with the same content as the corresponding msgid,
prepeding it with the character sequence '!TR!'.
It is useful for visual quick testing of translation coverage and po file
generation.
"""
import argparse
#
# Like what you see? Join us!
# https://www.univention.com/about-us/careers/vacancies/
#
# Copyright 2013-2024 Univention GmbH
#
# https://www.univention.de/
#
# All rights reserved.
#
# The source code of this program is made available
# under the terms of the GNU Affero General Public License version 3
# (GNU AGPL V3) as published by the Free Software Foundation.
#
# Binary versions of this program provided by Univention to you as
# well as other copyrighted, protected or trademarked materials like
# Logos, graphics, fonts, specific documentations and configurations,
# cryptographic keys etc. are subject to a license agreement between
# you and Univention and not subject to the GNU AGPL V3.
#
# In the case you use this program under the terms of the GNU AGPL V3,
# the program is provided in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public
# License with the Debian GNU/Linux or Univention distribution in file
# /usr/share/common-licenses/AGPL-3; if not, see
# <https://www.gnu.org/licenses/>.
import os

import polib


def parse_args():
    # type: () -> argparse.Namespace
    parser = argparse.ArgumentParser(description=__doc__, usage='%(prog)s [directory]')
    parser.add_argument('directory', help="Base directory for recursive search")
    args = parser.parse_args()
    return args


def process(po_dir):
    # type: (str) -> None
    for _dir, _dns, fns in os.walk(os.path.abspath(po_dir)):
        for po_file in fns:
            if not po_file.endswith('.po'):
                continue
            po = polib.pofile(os.path.join(_dir, po_file))
            for entry in po:
                if entry.msgid == '':
                    continue
                entry.msgstr = "!TR! " + entry.msgid
            po.save(os.path.join(_dir, po_file))


def main():
    # type: () -> None
    args = parse_args()
    process(args.directory)


if __name__ == '__main__':
    main()
