rename module to something less generic.
[blender.git] / release / scripts / modules / bl_i18n_utils / update_branches.py
1 #!/usr/bin/python3
2
3 # ***** BEGIN GPL LICENSE BLOCK *****
4 #
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU General Public License
7 # as published by the Free Software Foundation; either version 2
8 # of the License, or (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software Foundation,
17 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 #
19 # ***** END GPL LICENSE BLOCK *****
20
21 # <pep8 compliant>
22
23 # Update all branches:
24 # * Generate a temp messages.txt file.
25 # * Use it to generate a temp .pot file.
26 # * Use it to update all .po’s in /branches.
27
28 import subprocess
29 import os
30 import sys
31 import tempfile
32
33 import settings
34
35 PY3 = settings.PYTHON3_EXEC
36
37 def main():
38     import argparse
39     parser = argparse.ArgumentParser(description="" \
40                                  "Update all branches:\n" \
41                                  "* Generate a temp messages.txt file.\n" \
42                                  "* Use it to generate a temp .pot file.\n" \
43                                  "* Use it to update all .po’s in /branches.")
44     parser.add_argument('--pproc-contexts', action="store_true",
45                         help="Pre-process po’s to avoid having plenty of "
46                              "fuzzy msgids just because a context was "
47                              "added/changed!")
48     parser.add_argument('-c', '--no_checks', default=True,
49                         action="store_false",
50                         help="No checks over UI messages.")
51     parser.add_argument('-a', '--add', action="store_true",
52                         help="Add missing po’s (useful only when one or " \
53                              "more languages are given!).")
54     parser.add_argument('langs', metavar='ISO_code', nargs='*',
55                         help="Restrict processed languages to those.")
56     args = parser.parse_args()
57
58
59     ret = 0
60
61     # Generate a temp messages file.
62     dummy, msgfile = tempfile.mkstemp(suffix=".txt",
63                                       prefix="blender_messages_")
64     os.close(dummy)
65     cmd = (PY3, "./update_msg.py", "-o", msgfile)
66     t = subprocess.call(cmd)
67     if t:
68         ret = t
69
70     # Regenerate POTFILES.in.
71 #    cmd = (PY3, "./update_potinput.py")
72 #    t = subprocess.call(cmd)
73 #    if t:
74 #        ret = t
75
76     # Generate a temp pot file.
77     dummy, potfile = tempfile.mkstemp(suffix=".pot",
78                                       prefix="blender_pot_")
79     os.close(dummy)
80     cmd = [PY3, "./update_pot.py", "-i", msgfile, "-o", potfile]
81     if not args.no_checks:
82         cmd.append("-c")
83     t = subprocess.call(cmd)
84     if t:
85         ret = t
86
87     # Update branches’ po files.
88     cmd = [PY3, "./update_po.py", "-i", potfile]
89     if args.langs:
90         if args.add:
91             cmd.append("-a")
92         cmd += args.langs
93     if args.pproc_contexts:
94         cmd.append("--pproc-contexts")
95     t = subprocess.call(cmd)
96     if t:
97         ret = t
98
99     return ret
100
101
102 if __name__ == "__main__":
103     print("\n\n *** Running {} *** \n".format(__file__))
104     sys.exit(main())