| # Copyright 2020 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Updates the generated ClientVariations proto parser and formatter. |
| |
| If this script happens not to run correctly in your environment, it should be |
| easy to perform the steps manually. This script simply builds a generated file, |
| and then copies it into the Chromium checkout, making some simple modifications. |
| """ |
| |
| import argparse |
| import os |
| |
| OUTPUT_TEMPLATE = """\ |
| /* eslint-disable */ |
| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Note: This is a generated file. Do not edit by hand. Instead, run |
| // components/variations/proto/devtools/update_client_variations.py to update. |
| |
| const gen = {}; |
| |
| // clang-format off |
| %s |
| // clang-format on |
| |
| export function parseClientVariations(data) { |
| return gen.parseClientVariations(data); |
| } |
| export function formatClientVariations(data) { |
| return gen.formatClientVariations(data); |
| } |
| """ |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument( |
| '-t', '--target', default='Default', |
| help='the target build subdirectory under src/out/') |
| args = parser.parse_args() |
| |
| cwd = os.path.dirname(__file__) |
| root = os.path.join(cwd, '..', '..', '..', '..') |
| build_dir = os.path.abspath(os.path.join(root, 'out', args.target)) |
| cmd = 'autoninja -C %s components/variations/proto/devtools' % build_dir |
| os.system(cmd) |
| |
| script_file = os.path.join( |
| build_dir, 'gen', 'components', 'variations', 'proto', 'devtools', |
| 'client_variations_gen.js') |
| with open(script_file, 'r') as f: |
| script = f.read().strip() |
| script = script.replace('call(this)', 'call(gen)') |
| |
| output_file = os.path.abspath( |
| os.path.join(cwd, 'client_variations.js')) |
| with open(output_file, 'w') as f: |
| f.write(OUTPUT_TEMPLATE % script) |
| |
| |
| if __name__ == '__main__': |
| main() |