| #!/usr/bin/env python |
| # |
| # Copyright 2013 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| ''' Interpolates build environment information into a file. |
| ''' |
| |
| from argparse import ArgumentParser |
| from datetime import datetime |
| from os import path |
| import subprocess |
| import sys |
| import json |
| |
| |
| def GetDartSdkGitRevision(buildroot): |
| project_root = path.join(buildroot, 'third_party', 'dart') |
| return subprocess.check_output( |
| ['git', '-C', project_root, 'rev-parse', 'HEAD']).strip() |
| |
| |
| def GetDartSdkSemanticVersion(buildroot): |
| project_root = path.join(buildroot, 'third_party', 'dart') |
| return subprocess.check_output( |
| ['git', '-C', project_root, 'describe', '--abbrev=0']).strip() |
| |
| |
| def GetFlutterEngineGitRevision(buildroot): |
| project_root = path.join(buildroot, 'flutter') |
| return subprocess.check_output( |
| ['git', '-C', project_root, 'rev-parse', 'HEAD']).strip() |
| |
| |
| def GetFuchsiaSdkVersion(buildroot): |
| with open(path.join( |
| buildroot, |
| 'fuchsia', |
| 'sdk', |
| 'linux', |
| 'meta', |
| 'manifest.json'), |
| 'r') as fuchsia_sdk_manifest: |
| return json.load(fuchsia_sdk_manifest)['id'] |
| |
| |
| def main(): |
| # Parse arguments. |
| parser = ArgumentParser() |
| parser.add_argument( |
| '--input', action='store', help='input file path', required=True) |
| parser.add_argument( |
| '--output', action='store', help='output file path', required=True) |
| parser.add_argument( |
| '--buildroot', |
| action='store', |
| help='path to the flutter engine buildroot', |
| required=True) |
| args = parser.parse_args() |
| |
| # Read, interpolate, write. |
| with open(args.input, 'r') as i, open(args.output, 'w') as o: |
| o.write( |
| i.read() |
| .replace( |
| '{{DART_SDK_GIT_REVISION}}', |
| GetDartSdkGitRevision(args.buildroot)) |
| .replace( |
| '{{DART_SDK_SEMANTIC_VERSION}}', |
| GetDartSdkSemanticVersion(args.buildroot)) |
| .replace( |
| '{{FLUTTER_ENGINE_GIT_REVISION}}', |
| GetFlutterEngineGitRevision(args.buildroot)) |
| .replace( |
| '{{FUCHSIA_SDK_VERSION}}', |
| GetFuchsiaSdkVersion(args.buildroot))) |
| |
| |
| if __name__ == '__main__': |
| main() |