mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
93 lines
2.2 KiB
Python
Executable File
93 lines
2.2 KiB
Python
Executable File
#!/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.
|
|
""" Gather all the fuchsia artifacts to a destination directory.
|
|
"""
|
|
|
|
import argparse
|
|
import errno
|
|
import json
|
|
import os
|
|
import platform
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
_ARTIFACT_PATH_TO_DST = {
|
|
'flutter_jit_runner': 'flutter_jit_runner',
|
|
'icudtl.dat': 'data/icudtl.dat',
|
|
'dart_runner': 'dart_runner',
|
|
'flutter_patched_sdk': 'flutter_patched_sdk'
|
|
}
|
|
|
|
|
|
def EnsureParentExists(path):
|
|
dir_name, _ = os.path.split(path)
|
|
if not os.path.exists(dir_name):
|
|
os.makedirs(dir_name)
|
|
|
|
|
|
def CopyPath(src, dst):
|
|
try:
|
|
EnsureParentExists(dst)
|
|
shutil.copytree(src, dst)
|
|
except OSError as exc:
|
|
if exc.errno == errno.ENOTDIR:
|
|
shutil.copy(src, dst)
|
|
else:
|
|
raise
|
|
|
|
|
|
def CreateMetaPackage(dst_root, far_name):
|
|
meta = os.path.join(dst_root, 'meta')
|
|
if not os.path.isdir(meta):
|
|
os.makedirs(meta)
|
|
content = {}
|
|
content['name'] = far_name
|
|
content['version'] = '0'
|
|
package = os.path.join(meta, 'package')
|
|
with open(package, 'w') as out_file:
|
|
json.dump(content, out_file)
|
|
|
|
|
|
def GatherArtifacts(src_root, dst_root, create_meta_package=True):
|
|
if not os.path.exists(dst_root):
|
|
os.makedirs(dst_root)
|
|
else:
|
|
shutil.rmtree(dst_root)
|
|
|
|
for src_rel, dst_rel in _ARTIFACT_PATH_TO_DST.iteritems():
|
|
src_full = os.path.join(src_root, src_rel)
|
|
dst_full = os.path.join(dst_root, dst_rel)
|
|
if not os.path.exists(src_full):
|
|
print 'Unable to find artifact: ', str(src_full)
|
|
sys.exit(1)
|
|
CopyPath(src_full, dst_full)
|
|
|
|
if create_meta_package:
|
|
CreateMetaPackage(dst_root, 'flutter_runner')
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
|
|
parser.add_argument(
|
|
'--artifacts-root', dest='artifacts_root', action='store', required=True)
|
|
parser.add_argument(
|
|
'--dest-dir', dest='dst_dir', action='store', required=True)
|
|
|
|
args = parser.parse_args()
|
|
|
|
assert os.path.exists(args.artifacts_root)
|
|
dst_parent = os.path.abspath(os.path.join(args.dst_dir, os.pardir))
|
|
assert os.path.exists(dst_parent)
|
|
|
|
GatherArtifacts(args.artifacts_root, args.dst_dir)
|
|
return 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|