Index: trunk/l10n-kf5/scripts/generate_release_data.py =================================================================== --- trunk/l10n-kf5/scripts/generate_release_data.py (revision 1557569) +++ trunk/l10n-kf5/scripts/generate_release_data.py (revision 1557570) @@ -1,516 +1,517 @@ #!/usr/bin/python """ Generator of release announcements language data """ from __future__ import print_function """ Copyright 2013 Luigi Toscano Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the name of the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall the author be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software. """ import argparse import logging import polib import os import subprocess import sys import tempfile from collections import OrderedDict RELEASE_DATA_PHP_FILE = 'release_data.php' XGETTEXT_WWW = ["xgettext", "--copyright-holder=This_file_is_part_of_KDE", "--from-code=UTF-8", "-L", "PHP", "-ki18n", "-ki18n_var", "-ki18n_noop", "--msgid-bugs-address=https://bugs.kde.org"] def get_release_languages(release_files, announcement_basedir, translation_basedir): """ Returns the list of valid translation languages for each release """ rel_langs = OrderedDict() # find all the languages where www_www.po exists www_langs = [lang_dir for lang_dir in os.listdir(translation_basedir) if os.path.isdir(os.path.join(translation_basedir, lang_dir)) and os.path.isfile(os.path.join(translation_basedir, lang_dir, "messages/www/www_www.po"))] if 'x-test' in www_langs: www_langs.remove('x-test') logging.debug("Languages with www_www.po: %s", www_langs) for release, rel_files in release_files.iteritems(): # create a temporary file pot, fills it with the output of xgettext on # the release files (tmp_pot_handler, tmp_pot_name) = tempfile.mkstemp(suffix=".pot", prefix="tmprel%s" %(release)) os.close(tmp_pot_handler) # $XGETTEXT_WWW $(find -name "*.php" -o -name "*.inc") -o $podir/www_www.pot rel_files_fullpath = [os.path.join(announcement_basedir, rel_file) for rel_file in rel_files] cmd_line = [] cmd_line.extend(XGETTEXT_WWW) cmd_line.extend(["-o", tmp_pot_name]) cmd_line.extend(rel_files_fullpath) try: logging.debug("Executing %s...", cmd_line) subprocess.call(cmd_line) pot_file = polib.pofile(tmp_pot_name) total_pot_entries = len(pot_file.untranslated_entries()) except IOError: continue curr_release_langs = [] # for every language where www_www.po exists, msgmerge its www_www.po with # the restricted template, open the new file and gets the statistics for www_lang in www_langs: translated_percentage = 0 (tmp_po_handler, tmp_po) = tempfile.mkstemp(suffix=".po", prefix="tmprel%s" %(release)) os.close(tmp_po_handler) try: po_file = polib.pofile(os.path.join(translation_basedir, www_lang, "messages/www/www_www.po")) po_file.merge(pot_file) translated_percentage = po_file.percent_translated() translated_messages = len(po_file.translated_entries()) release_ok_msg = "incomplete" if translated_percentage == 100 and \ total_pot_entries == translated_messages: curr_release_langs.append(www_lang) release_ok_msg = "complete" logging.debug("%s, %s => %s; total %s, translated %s (%s%%) ", release, www_lang, release_ok_msg, total_pot_entries, translated_messages, translated_percentage) except IOError: pass finally: os.remove(tmp_po) curr_release_langs.sort() curr_release_langs.insert(0, "en") rel_langs[release] = curr_release_langs os.remove(tmp_pot_name) return rel_langs def define_release_data(announcement_basedir, translation_basedir, output_dir): """ Define the data for each release announcement """ # The following should be either defined here or taken from a file release_files = OrderedDict() release_files["4.10"] = ["4.10/index.php", "4.10/applications.php", "4.10/plasma.php", "4.10/platform.php", "4.10/boilerplate.inc"] release_files["4.10.1"] = ["announce-4.10.1.php"] release_files["4.10.2"] = ["announce-4.10.2.php"] release_files["4.10.3"] = ["announce-4.10.3.php"] release_files["4.10.4"] = ["announce-4.10.4.php"] release_files["4.10.5"] = ["announce-4.10.5.php"] release_files["4.10.80"] = ["announce-4.11-beta1.php"] release_files["4.10.90"] = ["announce-4.11-beta2.php"] release_files["4.10.95"] = ["announce-4.11-rc1.php"] release_files["4.10.97"] = ["announce-4.11-rc2.php"] release_files["4.11"] = ["4.11/index.php", "4.11/applications.php", "4.11/plasma.php", "4.11/platform.php", "4.11/boilerplate.inc"] release_files["4.11.1"] = ["announce-4.11.1.php"] release_files["4.11.2"] = ["announce-4.11.2.php"] release_files["4.11.3"] = ["announce-4.11.3.php"] release_files["4.11.4"] = ["announce-4.11.4.php"] release_files["4.11.5"] = ["announce-4.11.5.php"] release_files["4.11.80"] = ["announce-4.12-beta1.php"] release_files["4.11.90"] = ["announce-4.12-beta2.php"] release_files["4.11.95"] = ["announce-4.12-beta3.php"] release_files["4.11.97"] = ["announce-4.12-rc.php"] release_files["4.12"] = ["4.12/index.php", "4.12/applications.php", "4.12/boilerplate.inc"] release_files["4.12.1"] = ["announce-4.12.1.php"] release_files["4.12.2"] = ["announce-4.12.2.php"] release_files["4.12.3"] = ["announce-4.12.3.php"] release_files["4.12.4"] = ["announce-4.12.4.php"] release_files["4.12.5"] = ["announce-4.12.5.php"] release_files["4.12.80"] = ["announce-4.13-beta1.php"] release_files["4.12.90"] = ["announce-4.13-beta2.php"] release_files["4.12.95"] = ["announce-4.13-beta3.php"] release_files["4.12.97"] = ["announce-4.13-rc.php"] release_files["plasma2tp"] = ["plasma2tp/index.php"] release_files["plasma-4.96.0"] = ["announce-plasma-next-beta1.php"] release_files["plasma-4.98.0"] = ["plasma-5.0-rc.php"] release_files["plasma-5.0.0"] = ["plasma5.0/index.php"] release_files["plasma-5.0.1"] = ["plasma-5.0.1.php"] release_files["plasma-5.0.2"] = ["plasma-5.0.2.php"] release_files["plasma-5.0.95"] = ["plasma-5.0.95.php"] release_files["plasma-5.1.0"] = ["plasma-5.1/index.php"] release_files["plasma-5.1.1"] = ["plasma-5.1.1.php"] release_files["plasma-5.1.95"] = ["plasma-5.1.95.php"] release_files["plasma-5.2.0"] = ["plasma-5.2.0.php"] release_files["plasma-5.2.1"] = ["plasma-5.2.1.php"] release_files["plasma-5.2.2"] = ["plasma-5.2.2.php"] release_files["plasma-5.2.95"] = ["plasma-5.2.95.php"] release_files["plasma-5.3.0"] = ["plasma-5.3.0.php"] release_files["plasma-5.3.1"] = ["plasma-5.3.1.php"] release_files["plasma-5.3.2"] = ["plasma-5.3.2.php"] release_files["plasma-5.3.95"] = ["plasma-5.3.95.php"] release_files["plasma-5.4.0"] = ["plasma-5.4.0.php"] release_files["plasma-5.4.1"] = ["plasma-5.4.1.php"] release_files["plasma-5.4.2"] = ["plasma-5.4.2.php"] release_files["plasma-5.4.3"] = ["plasma-5.4.3.php"] release_files["plasma-5.4.95"] = ["plasma-5.4.95.php"] release_files["plasma-5.5.0"] = ["plasma-5.5.0.php"] release_files["plasma-5.5.1"] = ["plasma-5.5.1.php"] release_files["plasma-5.5.2"] = ["plasma-5.5.2.php"] release_files["plasma-5.5.3"] = ["plasma-5.5.3.php"] release_files["plasma-5.5.4"] = ["plasma-5.5.4.php"] release_files["plasma-5.5.5"] = ["plasma-5.5.5.php"] release_files["plasma-5.5.95"] = ["plasma-5.5.95.php"] release_files["plasma-5.6.0"] = ["plasma-5.6.0.php"] release_files["plasma-5.6.1"] = ["plasma-5.6.1.php"] release_files["plasma-5.6.2"] = ["plasma-5.6.2.php"] release_files["plasma-5.6.3"] = ["plasma-5.6.3.php"] release_files["plasma-5.6.4"] = ["plasma-5.6.4.php"] release_files["plasma-5.6.5"] = ["plasma-5.6.5.php"] release_files["plasma-5.6.95"] = ["plasma-5.6.95.php"] release_files["plasma-5.7.0"] = ["plasma-5.7.0.php"] release_files["plasma-5.7.1"] = ["plasma-5.7.1.php"] release_files["plasma-5.7.2"] = ["plasma-5.7.2.php"] release_files["plasma-5.7.3"] = ["plasma-5.7.3.php"] release_files["plasma-5.7.4"] = ["plasma-5.7.4.php"] release_files["plasma-5.7.5"] = ["plasma-5.7.5.php"] release_files["plasma-5.7.95"] = ["plasma-5.7.95.php"] release_files["plasma-5.8.0"] = ["plasma-5.8.0.php"] release_files["plasma-5.8.1"] = ["plasma-5.8.1.php"] release_files["plasma-5.8.2"] = ["plasma-5.8.2.php"] release_files["plasma-5.8.3"] = ["plasma-5.8.3.php"] release_files["plasma-5.8.4"] = ["plasma-5.8.4.php"] release_files["plasma-5.8.5"] = ["plasma-5.8.5.php"] release_files["plasma-5.8.6"] = ["plasma-5.8.6.php"] release_files["plasma-5.8.7"] = ["plasma-5.8.7.php"] release_files["plasma-5.8.8"] = ["plasma-5.8.8.php"] release_files["plasma-5.8.9"] = ["plasma-5.8.9.php"] release_files["plasma-5.8.95"] = ["plasma-5.8.95.php"] release_files["plasma-5.9.0"] = ["plasma-5.9.0.php"] release_files["plasma-5.9.1"] = ["plasma-5.9.1.php"] release_files["plasma-5.9.2"] = ["plasma-5.9.2.php"] release_files["plasma-5.9.3"] = ["plasma-5.9.3.php"] release_files["plasma-5.9.4"] = ["plasma-5.9.4.php"] release_files["plasma-5.9.5"] = ["plasma-5.9.5.php"] release_files["plasma-5.9.95"] = ["plasma-5.9.95.php"] release_files["plasma-5.10.0"] = ["plasma-5.10.0.php"] release_files["plasma-5.10.1"] = ["plasma-5.10.1.php"] release_files["plasma-5.10.2"] = ["plasma-5.10.2.php"] release_files["plasma-5.10.3"] = ["plasma-5.10.3.php"] release_files["plasma-5.10.4"] = ["plasma-5.10.4.php"] release_files["plasma-5.10.5"] = ["plasma-5.10.5.php"] release_files["plasma-5.10.95"] = ["plasma-5.10.95.php"] release_files["plasma-5.11.0"] = ["plasma-5.11.0.php"] release_files["plasma-5.11.1"] = ["plasma-5.11.1.php"] release_files["plasma-5.11.2"] = ["plasma-5.11.2.php"] release_files["plasma-5.11.3"] = ["plasma-5.11.3.php"] release_files["plasma-5.11.4"] = ["plasma-5.11.4.php"] release_files["plasma-5.11.5"] = ["plasma-5.11.5.php"] release_files["plasma-5.11.95"] = ["plasma-5.11.95.php"] release_files["plasma-5.12.0"] = ["plasma-5.12.0.php"] release_files["plasma-5.12.1"] = ["plasma-5.12.1.php"] release_files["plasma-5.12.2"] = ["plasma-5.12.2.php"] release_files["plasma-5.12.3"] = ["plasma-5.12.3.php"] release_files["plasma-5.12.4"] = ["plasma-5.12.4.php"] release_files["plasma-5.12.5"] = ["plasma-5.12.5.php"] release_files["plasma-5.12.6"] = ["plasma-5.12.6.php"] release_files["plasma-5.12.7"] = ["plasma-5.12.7.php"] release_files["plasma-5.12.8"] = ["plasma-5.12.8.php"] release_files["plasma-5.12.9"] = ["plasma-5.12.9.php"] release_files["plasma-5.12.90"] = ["plasma-5.12.90.php"] release_files["plasma-5.13.0"] = ["plasma-5.13.0.php"] release_files["plasma-5.13.1"] = ["plasma-5.13.1.php"] release_files["plasma-5.13.2"] = ["plasma-5.13.2.php"] release_files["plasma-5.13.3"] = ["plasma-5.13.3.php"] release_files["plasma-5.13.4"] = ["plasma-5.13.4.php"] release_files["plasma-5.13.5"] = ["plasma-5.13.5.php"] release_files["plasma-5.13.90"] = ["plasma-5.13.90.php"] release_files["plasma-5.14.0"] = ["plasma-5.14.0.php"] release_files["plasma-5.14.1"] = ["plasma-5.14.1.php"] release_files["plasma-5.14.2"] = ["plasma-5.14.2.php"] release_files["plasma-5.14.3"] = ["plasma-5.14.3.php"] release_files["plasma-5.14.4"] = ["plasma-5.14.4.php"] release_files["plasma-5.14.5"] = ["plasma-5.14.5.php"] release_files["plasma-5.14.90"] = ["plasma-5.14.90.php"] release_files["plasma-5.15.0"] = ["plasma-5.15.0.php"] release_files["plasma-5.15.1"] = ["plasma-5.15.1.php"] release_files["plasma-5.15.2"] = ["plasma-5.15.2.php"] release_files["plasma-5.15.3"] = ["plasma-5.15.3.php"] release_files["plasma-5.15.4"] = ["plasma-5.15.4.php"] release_files["plasma-5.15.5"] = ["plasma-5.15.5.php"] release_files["plasma-5.15.90"] = ["plasma-5.15.90.php"] release_files["plasma-5.16.0"] = ["plasma-5.16.0.php"] release_files["plasma-5.16.1"] = ["plasma-5.16.1.php"] release_files["plasma-5.16.2"] = ["plasma-5.16.2.php"] release_files["plasma-5.16.3"] = ["plasma-5.16.3.php"] release_files["plasma-5.16.4"] = ["plasma-5.16.4.php"] release_files["plasma-5.16.5"] = ["plasma-5.16.5.php"] release_files["plasma-5.16.90"] = ["plasma-5.16.90.php"] release_files["plasma-5.17.0"] = ["plasma-5.17.0.php"] release_files["plasma-5.17.1"] = ["plasma-5.17.1.php"] release_files["plasma-5.17.2"] = ["plasma-5.17.2.php"] release_files["plasma-5.17.3"] = ["plasma-5.17.3.php"] + release_files["plasma-5.17.4"] = ["plasma-5.17.4.php"] release_files["frameworks5TP"] = ["frameworks5TP/index.php"] release_files["4.96.0"] = ["announce-frameworks5-alpha.php"] release_files["4.97.0"] = ["announce-frameworks5-alpha2.php"] release_files["4.100.0"] = ["announce-frameworks5-beta3.php"] release_files["4.13"] = ["4.13/index.php", "4.13/applications.php", "4.13/boilerplate.inc"] release_files["4.13.1"] = ["announce-4.13.1.php"] release_files["4.13.2"] = ["announce-4.13.2.php"] release_files["4.13.3"] = ["announce-4.13.3.php"] release_files["4.13.80"] = ["announce-4.14-beta1.php"] release_files["4.13.90"] = ["announce-4.14-beta2.php"] release_files["4.13.95"] = ["announce-4.14-beta3.php"] release_files["4.13.97"] = ["announce-4.14-rc.php"] release_files["4.14"] = ["4.14/index.php"] release_files["4.14.1"] = ["announce-4.14.1.php"] release_files["4.14.2"] = ["announce-4.14.2.php"] release_files["4.14.3"] = ["announce-4.14.3.php"] release_files["5.0.0"] = ["kde-frameworks-5.0.php"] release_files["5.1.0"] = ["kde-frameworks-5.1.php"] release_files["5.2.0"] = ["kde-frameworks-5.2.0.php"] release_files["5.3.0"] = ["kde-frameworks-5.3.0.php"] release_files["5.4.0"] = ["kde-frameworks-5.4.0.php"] release_files["5.5.0"] = ["kde-frameworks-5.5.0.php"] release_files["5.6.0"] = ["kde-frameworks-5.6.0.php"] release_files["5.7.0"] = ["kde-frameworks-5.7.0.php"] release_files["5.8.0"] = ["kde-frameworks-5.8.0.php"] release_files["5.9.0"] = ["kde-frameworks-5.9.0.php"] release_files["5.10.0"] = ["kde-frameworks-5.10.0.php"] release_files["5.11.0"] = ["kde-frameworks-5.11.0.php"] release_files["5.12.0"] = ["kde-frameworks-5.12.0.php"] release_files["5.13.0"] = ["kde-frameworks-5.13.0.php"] release_files["5.14.0"] = ["kde-frameworks-5.14.0.php"] release_files["5.15.0"] = ["kde-frameworks-5.15.0.php"] release_files["5.16.0"] = ["kde-frameworks-5.16.0.php"] release_files["5.17.0"] = ["kde-frameworks-5.17.0.php"] release_files["5.18.0"] = ["kde-frameworks-5.18.0.php"] release_files["5.19.0"] = ["kde-frameworks-5.19.0.php"] release_files["5.20.0"] = ["kde-frameworks-5.20.0.php"] release_files["5.21.0"] = ["kde-frameworks-5.21.0.php"] release_files["5.22.0"] = ["kde-frameworks-5.22.0.php"] release_files["5.23.0"] = ["kde-frameworks-5.23.0.php"] release_files["5.24.0"] = ["kde-frameworks-5.24.0.php"] release_files["5.25.0"] = ["kde-frameworks-5.25.0.php"] release_files["5.26.0"] = ["kde-frameworks-5.26.0.php"] release_files["5.27.0"] = ["kde-frameworks-5.27.0.php"] release_files["5.28.0"] = ["kde-frameworks-5.28.0.php"] release_files["5.29.0"] = ["kde-frameworks-5.29.0.php"] release_files["5.30.0"] = ["kde-frameworks-5.30.0.php"] release_files["5.31.0"] = ["kde-frameworks-5.31.0.php"] release_files["5.32.0"] = ["kde-frameworks-5.32.0.php"] release_files["5.33.0"] = ["kde-frameworks-5.33.0.php"] release_files["5.34.0"] = ["kde-frameworks-5.34.0.php"] release_files["5.35.0"] = ["kde-frameworks-5.35.0.php"] release_files["5.36.0"] = ["kde-frameworks-5.36.0.php"] release_files["5.37.0"] = ["kde-frameworks-5.37.0.php"] release_files["5.38.0"] = ["kde-frameworks-5.38.0.php"] release_files["5.39.0"] = ["kde-frameworks-5.39.0.php"] release_files["5.40.0"] = ["kde-frameworks-5.40.0.php"] release_files["5.41.0"] = ["kde-frameworks-5.41.0.php"] release_files["5.42.0"] = ["kde-frameworks-5.42.0.php"] release_files["5.43.0"] = ["kde-frameworks-5.43.0.php"] release_files["5.44.0"] = ["kde-frameworks-5.44.0.php"] release_files["5.45.0"] = ["kde-frameworks-5.45.0.php"] release_files["5.46.0"] = ["kde-frameworks-5.46.0.php"] release_files["5.47.0"] = ["kde-frameworks-5.47.0.php"] release_files["5.48.0"] = ["kde-frameworks-5.48.0.php"] release_files["5.49.0"] = ["kde-frameworks-5.49.0.php"] release_files["5.50.0"] = ["kde-frameworks-5.50.0.php"] release_files["5.51.0"] = ["kde-frameworks-5.51.0.php"] release_files["5.52.0"] = ["kde-frameworks-5.52.0.php"] release_files["5.53.0"] = ["kde-frameworks-5.53.0.php"] release_files["5.54.0"] = ["kde-frameworks-5.54.0.php"] release_files["5.55.0"] = ["kde-frameworks-5.55.0.php"] release_files["5.56.0"] = ["kde-frameworks-5.56.0.php"] release_files["5.57.0"] = ["kde-frameworks-5.57.0.php"] release_files["5.58.0"] = ["kde-frameworks-5.58.0.php"] release_files["5.59.0"] = ["kde-frameworks-5.59.0.php"] release_files["5.60.0"] = ["kde-frameworks-5.60.0.php"] release_files["5.61.0"] = ["kde-frameworks-5.61.0.php"] release_files["5.62.0"] = ["kde-frameworks-5.62.0.php"] release_files["5.63.0"] = ["kde-frameworks-5.63.0.php"] release_files["5.64.0"] = ["kde-frameworks-5.64.0.php"] # NEW_FRAMEWORK_RELEASE (this comment exists for the script, don't remove it) release_files["applications-14.11.80"] = ["announce-applications-14.12-beta1.php"] release_files["applications-14.11.90"] = ["announce-applications-14.12-beta2.php"] release_files["applications-14.11.95"] = ["announce-applications-14.12-beta3.php"] release_files["applications-14.11.97"] = ["announce-applications-14.12-rc.php"] release_files["applications-14.12.0"] = ["announce-applications-14.12.0.php"] release_files["applications-14.12.1"] = ["announce-applications-14.12.1.php"] release_files["applications-14.12.2"] = ["announce-applications-14.12.2.php"] release_files["applications-14.12.3"] = ["announce-applications-14.12.3.php"] release_files["applications-15.03.80"] = ["announce-applications-15.04-beta1.php"] release_files["applications-15.03.90"] = ["announce-applications-15.04-beta2.php"] release_files["applications-15.03.95"] = ["announce-applications-15.04-beta3.php"] release_files["applications-15.03.97"] = ["announce-applications-15.04-rc.php"] release_files["applications-15.04.0"] = ["announce-applications-15.04.0.php"] release_files["applications-15.04.1"] = ["announce-applications-15.04.1.php"] release_files["applications-15.04.2"] = ["announce-applications-15.04.2.php"] release_files["applications-15.04.3"] = ["announce-applications-15.04.3.php"] release_files["applications-15.07.80"] = ["announce-applications-15.08-beta.php"] release_files["applications-15.07.90"] = ["announce-applications-15.08-rc.php"] release_files["applications-15.08.0"] = ["announce-applications-15.08.0.php"] release_files["applications-15.08.1"] = ["announce-applications-15.08.1.php"] release_files["applications-15.08.2"] = ["announce-applications-15.08.2.php"] release_files["applications-15.08.3"] = ["announce-applications-15.08.3.php"] release_files["applications-15.11.80"] = ["announce-applications-15.12-beta.php"] release_files["applications-15.11.90"] = ["announce-applications-15.12-rc.php"] release_files["applications-15.12.0"] = ["announce-applications-15.12.0.php"] release_files["applications-15.12.1"] = ["announce-applications-15.12.1.php"] release_files["applications-15.12.2"] = ["announce-applications-15.12.2.php"] release_files["applications-15.12.3"] = ["announce-applications-15.12.3.php"] release_files["applications-16.03.80"] = ["announce-applications-16.04-beta.php"] release_files["applications-16.04.0"] = ["announce-applications-16.04.0.php"] release_files["applications-16.04.1"] = ["announce-applications-16.04.1.php"] release_files["applications-16.04.2"] = ["announce-applications-16.04.2.php"] release_files["applications-16.07.80"] = ["announce-applications-16.08-beta.php"] release_files["applications-16.07.90"] = ["announce-applications-16.08-rc.php"] release_files["applications-16.08.0"] = ["announce-applications-16.08.0.php"] release_files["applications-16.08.1"] = ["announce-applications-16.08.1.php"] release_files["applications-16.08.2"] = ["announce-applications-16.08.2.php"] release_files["applications-16.08.3"] = ["announce-applications-16.08.3.php"] release_files["applications-16.11.80"] = ["announce-applications-16.12-beta.php"] release_files["applications-16.11.90"] = ["announce-applications-16.12-rc.php"] release_files["applications-16.12.0"] = ["announce-applications-16.12.0.php"] release_files["applications-16.12.1"] = ["announce-applications-16.12.1.php"] release_files["applications-16.12.2"] = ["announce-applications-16.12.2.php"] release_files["applications-16.12.3"] = ["announce-applications-16.12.3.php"] release_files["applications-17.03.80"] = ["announce-applications-17.04-beta.php"] release_files["applications-17.03.90"] = ["announce-applications-17.04-rc.php"] release_files["applications-17.04.0"] = ["announce-applications-17.04.0.php"] release_files["applications-17.04.1"] = ["announce-applications-17.04.1.php"] release_files["applications-17.04.2"] = ["announce-applications-17.04.2.php"] release_files["applications-17.04.3"] = ["announce-applications-17.04.3.php"] release_files["applications-17.07.80"] = ["announce-applications-17.08-beta.php"] release_files["applications-17.07.90"] = ["announce-applications-17.08-rc.php"] release_files["applications-17.08.0"] = ["announce-applications-17.08.0.php"] release_files["applications-17.08.1"] = ["announce-applications-17.08.1.php"] release_files["applications-17.08.2"] = ["announce-applications-17.08.2.php"] release_files["applications-17.08.3"] = ["announce-applications-17.08.3.php"] release_files["applications-17.11.80"] = ["announce-applications-17.12-beta.php"] release_files["applications-17.11.90"] = ["announce-applications-17.12-rc.php"] release_files["applications-17.12.0"] = ["announce-applications-17.12.0.php"] release_files["applications-17.12.1"] = ["announce-applications-17.12.1.php"] release_files["applications-17.12.2"] = ["announce-applications-17.12.2.php"] release_files["applications-17.12.3"] = ["announce-applications-17.12.3.php"] release_files["applications-18.03.80"] = ["announce-applications-18.04-beta.php"] release_files["applications-18.03.90"] = ["announce-applications-18.04-rc.php"] release_files["applications-18.04.0"] = ["announce-applications-18.04.0.php"] release_files["applications-18.04.1"] = ["announce-applications-18.04.1.php"] release_files["applications-18.04.2"] = ["announce-applications-18.04.2.php"] release_files["applications-18.04.3"] = ["announce-applications-18.04.3.php"] release_files["applications-18.07.80"] = ["announce-applications-18.08-beta.php"] release_files["applications-18.07.90"] = ["announce-applications-18.08-rc.php"] release_files["applications-18.08.0"] = ["announce-applications-18.08.0.php"] release_files["applications-18.08.1"] = ["announce-applications-18.08.1.php"] release_files["applications-18.08.2"] = ["announce-applications-18.08.2.php"] release_files["applications-18.08.3"] = ["announce-applications-18.08.3.php"] release_files["applications-18.11.80"] = ["announce-applications-18.12-beta.php"] release_files["applications-18.11.90"] = ["announce-applications-18.12-rc.php"] release_files["applications-18.12.0"] = ["announce-applications-18.12.0.php"] release_files["applications-18.12.1"] = ["announce-applications-18.12.1.php"] release_files["applications-18.12.2"] = ["announce-applications-18.12.2.php"] release_files["applications-18.12.3"] = ["announce-applications-18.12.3.php"] release_files["applications-19.03.80"] = ["announce-applications-19.04-beta.php"] release_files["applications-19.03.90"] = ["announce-applications-19.04-rc.php"] release_files["applications-19.04.0"] = ["announce-applications-19.04.0.php"] release_files["applications-19.04.1"] = ["announce-applications-19.04.1.php"] release_files["applications-19.04.2"] = ["announce-applications-19.04.2.php"] release_files["applications-19.04.3"] = ["announce-applications-19.04.3.php"] release_files["applications-19.07.80"] = ["announce-applications-19.08-beta.php"] release_files["applications-19.07.90"] = ["announce-applications-19.08-rc.php"] release_files["applications-19.08.0"] = ["announce-applications-19.08.0.php"] release_files["applications-19.08.1"] = ["announce-applications-19.08.1.php"] release_files["applications-19.08.2"] = ["announce-applications-19.08.2.php"] release_files["applications-19.08.3"] = ["announce-applications-19.08.3.php"] # IMPORTANT: if the release file is split into different files, # the index file must be the first one in the list release_langs = get_release_languages(release_files, announcement_basedir, translation_basedir) info_msg = [] # first block: languages supported for each release release_langs_php = [' $announcement_langs = array('] for release, langs in release_langs.iteritems(): release_langs_php.append(" \"%s\" => array('%s')," % (release, "', '".join(langs))) info_msg.append("%s: %s" % (release, ','.join(langs))) release_langs_php.extend([' );']) logging.info("Languages found for release announcements:\n%s", '\n'.join(info_msg)) # second block: main announcement file for each release release_main_files_php = [' $announcement_main_files = array('] for release, rel_files in release_files.iteritems(): release_main_files_php.append(' "%s" => "%s",' % (release, os.path.basename(rel_files[0]))) release_main_files_php.extend([' );']) release_data_php_string = '\n' % \ ('\n'.join(release_langs_php), '\n'.join(release_main_files_php)) logging.debug("\nGenerated release data:\n%s", release_data_php_string) output_file = os.path.join(output_dir, RELEASE_DATA_PHP_FILE) with open(output_file, 'w') as release_data_php: release_data_php.write(release_data_php_string) def main(): """ Main function """ parser = argparse.ArgumentParser(description='Generates the release information file (languages supported, main file)') parser.add_argument('-a', '--announcements-dir', default='.', required=True, dest='announcements_dir', help='announcements directory') parser.add_argument('-t', '--translations-dir', default='.', required=True, dest='translations_dir', help='translations base directory') parser.add_argument('-o', '--output-dir', default=None, required=False, dest='output_dir', help='output directory') parser.add_argument('-v', '--verbose', action='store_true', default=False, dest='verbose', help='verbose output') parser.add_argument('-s', '--same-dir', action='store_true', default=False, dest='same_dir', help='the announcement directory is used for output') args = parser.parse_args() loglevel = logging.INFO if args.verbose: loglevel = logging.DEBUG logging.basicConfig(format='%(message)s', level=loglevel, stream=sys.stdout) if not os.path.isdir(args.announcements_dir) or \ not os.path.isdir(args.translations_dir) or \ (args.output_dir and not os.path.isdir(args.output_dir)): logging.error('Error: announcement-dirs, translation-dirs and output-dir ' 'must be valid directories.') parser.print_help() sys.exit(1) output_dir = args.output_dir if args.same_dir: if args.output_dir: logging.warning('Both -o and -s specified, using -o as output directory') else: output_dir = args.announcements_dir if not output_dir: output_dir = '.' define_release_data(args.announcements_dir, args.translations_dir, output_dir) if __name__ == "__main__": main()