| #!/usr/bin/env python |
| # Copyright 2017 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Ensures that Chromecast developers are notified of locale changes.""" |
| |
| import argparse |
| import sys |
| |
| CAST_LOCALES = [ |
| 'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en-GB', 'en-US', |
| 'es-419', 'es', 'et', 'fa', 'fi', 'fil', 'fr', 'gu', 'he', 'hi', 'hr', 'hu', |
| 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv', 'ml', 'mr', 'ms', 'nb', 'nl', |
| 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru', 'sk', 'sl', 'sr', 'sv', 'sw', 'ta', |
| 'te', 'th', 'tr', 'uk', 'vi', 'zh-CN', 'zh-TW' |
| ] |
| |
| SUCCESS_RETURN_CODE = 0 |
| FAILURE_RETURN_CODE = 1 |
| |
| |
| # Chromecast OWNERS need to know if the list of locales used in |
| # //build/config/locales.gni changes, so that the Chromecast build process |
| # can be updated accordingly when it does. |
| # |
| # This script runs a check to verify that the list of locales maintained in GN |
| # matches CAST_LOCALES above. If a CL changes that list, it must also change |
| # CAST_LOCALES in this file to make the Cast trybot pass. This change will |
| # require adding a //chromecast OWNER to the change, keeping the team aware of |
| # any locale changes. |
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument('locales', type=str, nargs='+', |
| help='Locales from the GN locale list') |
| parser.add_argument('--stamp-file', '-s', type=str, required=True, |
| help='The script will stamp this file if successful.') |
| args = parser.parse_args() |
| |
| if set(CAST_LOCALES) == set(args.locales): |
| open(args.stamp_file, 'w') |
| return SUCCESS_RETURN_CODE |
| |
| # The lists do not match. Compute the difference and log it to the developer. |
| removed_locales = set(CAST_LOCALES) - set(args.locales) |
| added_locales = set(args.locales) - set(CAST_LOCALES) |
| |
| print 'CAST_LOCALES no longer matches the locales list from GN!' |
| if removed_locales: |
| print 'These locales have been removed: {}'.format(list(removed_locales)) |
| if added_locales: |
| print 'These locales have been added: {}'.format(list(added_locales)) |
| print ('Please update CAST_LOCALES in {file} and add a reviewer from ' |
| '//chromecast/OWNERS to your CL. ').format(file=__file__) |
| return FAILURE_RETURN_CODE |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |