| #!/usr/bin/env python |
| |
| |
| """Run Cluster Telemetry to compute n-grams from SKPs.""" |
| |
| |
| import argparse |
| import os |
| import re |
| import subprocess |
| import sys |
| import tempfile |
| |
| |
| NGRAMS_LUA_SUBSTITUTION_STR = '-- CHANGEME\nlocal n = \d+\n-- CHANGEME' |
| SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__)) |
| |
| |
| def main(): |
| # Parse arguments. |
| parser = argparse.ArgumentParser( |
| description='Run Cluster Telemetry to compute n-grams from SKPs.') |
| parser.add_argument('--n', help='Compute n-grams with this integer as N', |
| required=True) |
| args, extra_args = parser.parse_known_args() |
| |
| # Read the n-gram Lua script. |
| script_path = os.path.join(SCRIPT_DIR, 'ngrams.lua') |
| with open(script_path) as f: |
| script_contents = f.read() |
| |
| # Replace the default value of n with the value specified by the user. |
| new_contents, subd = re.subn(NGRAMS_LUA_SUBSTITUTION_STR, |
| 'local n = %s' % args.n, script_contents, 1) |
| if subd != 1: |
| raise Exception('Unable to replace N in %s; expected to find:\n%s' % ( |
| script_path, sub)) |
| |
| # Write the new script contents to a temporary file. |
| tmp_script = tempfile.NamedTemporaryFile(delete=False) |
| try: |
| tmp_script.write(new_contents) |
| tmp_script.close() |
| |
| # Run trigger_ct_lua with the new script, forwarding the rest of the |
| # passed-in arguments to the script. |
| trigger_ct_lua = os.path.join(SCRIPT_DIR, 'trigger_ct_lua') |
| cmd = ['python', trigger_ct_lua, |
| '--script', tmp_script.name, |
| '--aggregator', os.path.join(SCRIPT_DIR, 'ngrams_aggregate.lua')] |
| cmd.extend(extra_args) |
| try: |
| subprocess.check_call(cmd) |
| except subprocess.CalledProcessError: |
| exit(1) |
| finally: |
| os.remove(tmp_script.name) |
| |
| |
| if __name__ == '__main__': |
| main() |