mirror of
https://gh.wpcy.net/https://github.com/WeblateOrg/weblate.git
synced 2026-05-04 19:46:37 +08:00
77 lines
1.7 KiB
Python
Executable file
77 lines
1.7 KiB
Python
Executable file
#! /usr/bin/env python
|
|
"""
|
|
Post update hook script to update message IDs in the Android strings file.
|
|
"""
|
|
|
|
from __future__ import print_function
|
|
|
|
import glob
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
from translate.storage.aresource import AndroidResourceFile
|
|
|
|
|
|
def build_index(storage):
|
|
index = {}
|
|
|
|
for unit in storage.units:
|
|
index[unit.getid()] = unit
|
|
|
|
return index
|
|
|
|
|
|
def update_file(template, index, filename):
|
|
storage = AndroidResourceFile.parsefile(filename)
|
|
changed = False
|
|
|
|
# Remove extra units
|
|
for unit in storage.units:
|
|
if unit.getid() not in index:
|
|
storage.body.remove(unit.xmlelement)
|
|
changed = True
|
|
|
|
if changed:
|
|
storage.save()
|
|
|
|
|
|
def main():
|
|
if os.environ.get('WL_FILE_FORMAT') != 'aresource':
|
|
print('Invalid file format!')
|
|
sys.exit(1)
|
|
|
|
if not os.environ.get('WL_TEMPLATE'):
|
|
print('Missing template!')
|
|
sys.exit(1)
|
|
|
|
if not os.environ.get('WL_FILEMASK'):
|
|
print('Missing filemask!')
|
|
sys.exit(1)
|
|
|
|
if not os.environ.get('WL_PATH'):
|
|
print('Missing path!')
|
|
sys.exit(1)
|
|
|
|
os.chdir(os.environ.get('WL_PATH'))
|
|
|
|
templatename = os.environ.get('WL_TEMPLATE')
|
|
|
|
template = AndroidResourceFile.parsefile(templatename)
|
|
index = build_index(template)
|
|
|
|
for filename in glob.glob(os.environ.get('WL_FILEMASK')):
|
|
if filename != templatename:
|
|
update_file(template, index, filename)
|
|
|
|
if subprocess.call(['git', 'commit', '--dry-run', '-a']) == 0:
|
|
ret = subprocess.call(
|
|
['git', 'commit', '-a', '-m', 'Updated translation files']
|
|
)
|
|
if ret == 0:
|
|
ret = subprocess.call(['git', 'push'])
|
|
sys.exit(ret)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|