| #!/usr/bin/env python |
| # Copyright 2016 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import argparse |
| import os |
| import stat |
| import string |
| import sys |
| |
| def main(): |
| parser = argparse.ArgumentParser( |
| 'Generate a script that invokes the Dart analyzer') |
| parser.add_argument('--out', help='Path to the invocation file to generate', |
| required=True) |
| parser.add_argument('--source-dir', help='Path to package source', |
| required=True) |
| parser.add_argument('--dot-packages', help='Path to the .packages file', |
| required=True) |
| parser.add_argument('--root-build-dir', |
| help='Path to root of the build directory', required=True) |
| parser.add_argument('--dartanalyzer', |
| help='Path to the Dart analyzer executable', |
| required=True) |
| parser.add_argument('--dart-sdk', help='Path to the Dart SDK', |
| required=True) |
| parser.add_argument('--package-name', help='Name of the analyzed package', |
| required=True) |
| parser.add_argument('--options', help='Path to analysis options') |
| args = parser.parse_args() |
| |
| analyzer_file = os.path.join(args.root_build_dir, args.out) |
| analyzer_path = os.path.dirname(analyzer_file) |
| if not os.path.exists(analyzer_path): |
| os.makedirs(analyzer_path) |
| |
| script_template = string.Template('''#!/bin/sh |
| |
| echo "Package : $package_name" |
| $dartanalyzer \\ |
| --packages=$dot_packages \\ |
| --dart-sdk=$dart_sdk \\ |
| $options_argument \\ |
| $source_dir \\ |
| "$$@" |
| ''') |
| with open(analyzer_file, 'w') as file: |
| file.write(script_template.substitute( |
| args.__dict__, |
| options_argument = '--options='+args.options if args.options else '')) |
| permissions = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | |
| stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP | |
| stat.S_IROTH) |
| os.chmod(analyzer_file, permissions) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |