blob: cde629296d18a6c73cb1c8fb846b33407c19ea8c [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()