blob: d4565702a199cd6a0f24d498a6eeec851df0eb91 [file] [log] [blame]
#!/usr/bin/env python3
#
# 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' if sys.platform.startswith('linux') else 'mac',
'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).decode('utf-8'))
.replace(
'{{DART_SDK_SEMANTIC_VERSION}}',
GetDartSdkSemanticVersion(args.buildroot).decode('utf-8'))
.replace(
'{{FLUTTER_ENGINE_GIT_REVISION}}',
GetFlutterEngineGitRevision(args.buildroot).decode('utf-8'))
.replace(
'{{FUCHSIA_SDK_VERSION}}',
GetFuchsiaSdkVersion(args.buildroot)))
if __name__ == '__main__':
main()