mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 02:05:42 +00:00
e7b21d82c2
Depends on D52590 Differential Revision: https://phabricator.services.mozilla.com/D52591 --HG-- extra : moz-landing-system : lando
105 lines
3.5 KiB
Python
105 lines
3.5 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import print_function
|
|
from lib.xul import collect_messages
|
|
from lib.dtd import get_dtds
|
|
from lib.utils import read_file, write_file
|
|
from lib.migration import build_migration
|
|
from lib.fluent import build_ftl
|
|
import json
|
|
import argparse
|
|
import sys
|
|
# import re
|
|
|
|
# To run this, you'll need to have lxml installed:
|
|
# `pip install lxml`
|
|
|
|
# default migration directions
|
|
data = {
|
|
'migration': 'python/l10n/fluent_migrations',
|
|
'description': 'Migrate l10n strings',
|
|
'prefix': ''
|
|
}
|
|
|
|
|
|
def parse_inputs():
|
|
sys_args = sys.argv[1:]
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('bug_id', type=str,
|
|
help='Id number for bug tracking')
|
|
parser.add_argument('xul', type=str,
|
|
help='POSIX path from mozilla-central to the XML to be updated')
|
|
parser.add_argument('ftl', type=str,
|
|
help='Case sensitive POSIX path from mozilla-central to desired ftl file')
|
|
parser.add_argument('mozilla_central', type=str,
|
|
help='Case sensitive absolute POSIX path to current mozilla-central repo')
|
|
parser.add_argument('dtd', type=str,
|
|
help='comma delimited list of case sensitive POSIX dtd file paths')
|
|
parser.add_argument('description', type=str,
|
|
help='string enclosed in quotes')
|
|
parser.add_argument('--dry-run', action='store_true',
|
|
help='Tell if running dry run or not')
|
|
parser.add_argument('--prefix', type=str,
|
|
help='a keyword string to be added to all l10n ids')
|
|
|
|
parsed_args = parser.parse_args(sys_args)
|
|
|
|
data['description'] = parsed_args.description
|
|
data['bug_id'] = parsed_args.bug_id
|
|
data['xul'] = parsed_args.xul
|
|
data['ftl'] = parsed_args.ftl
|
|
data['mozilla-central'] = parsed_args.mozilla_central
|
|
data['dtd'] = parsed_args.dtd.split(',')
|
|
data['dry-run'] = parsed_args.dry_run
|
|
data['prefix'] = parsed_args.prefix
|
|
data['recipe'] = "bug_{}_{}.py".format(data['bug_id'],
|
|
data['xul'].split('/')[-1].split('.')[0])
|
|
|
|
main()
|
|
|
|
|
|
def main():
|
|
dry_run = data['dry-run']
|
|
dtds = get_dtds(data['dtd'], data['mozilla-central'])
|
|
|
|
print('======== DTDs ========')
|
|
print(json.dumps(dtds, sort_keys=True, indent=2))
|
|
|
|
s = read_file(data['xul'], data['mozilla-central'])
|
|
|
|
print('======== INPUT ========')
|
|
print(s)
|
|
|
|
print('======== OUTPUT ========')
|
|
(new_xul, messages) = collect_messages(s, data['prefix'])
|
|
print(new_xul)
|
|
if not dry_run:
|
|
write_file(data['xul'], new_xul, data['mozilla-central'])
|
|
|
|
print('======== L10N ========')
|
|
|
|
print(json.dumps(messages, sort_keys=True, indent=2))
|
|
|
|
migration = build_migration(messages, dtds, data)
|
|
|
|
print('======== MIGRATION ========')
|
|
print(migration)
|
|
recipe_path = "{}/{}".format(data['migration'], data['recipe'])
|
|
if not dry_run:
|
|
write_file(recipe_path, migration, data['mozilla-central'])
|
|
|
|
ftl = build_ftl(messages, dtds, data)
|
|
|
|
print('======== Fluent ========')
|
|
print(ftl.encode("utf-8"))
|
|
if not dry_run:
|
|
write_file(data['ftl'], ftl.encode("utf-8"), data['mozilla-central'], append=True)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
parse_inputs()
|