| #!/usr/bin/env python |
| |
| # Copyright 2019 Google LLC. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """ |
| Opens |base_manifest| and copies the contents to |manifest| then traverses |
| |root_dir| and appends every file as a Fuchsia package manifest entry to |
| |manifest|. |
| """ |
| |
| import argparse |
| import os |
| import subprocess |
| |
| parser = argparse.ArgumentParser() |
| parser.add_argument('--root_dir', dest='root_dir', action='store', required=True) |
| parser.add_argument('--base_manifest', dest='base_manifest', action='store', required=True) |
| parser.add_argument('--manifest', dest='manifest', action='store', required=True) |
| parser.add_argument('--deps', dest='deps', action='store', required=True) |
| parser.add_argument('--root_build_dir', dest='root_build_dir', action='store', required=True) |
| args = parser.parse_args() |
| |
| root_dir = args.root_dir |
| if not os.path.exists(root_dir): |
| print "--root_dir path specified: " + root_dir + " doesn't exist.\n" |
| exit(1) |
| |
| base_manifest = args.base_manifest |
| if not os.path.exists(base_manifest): |
| print "--base_manifest specified: " + base_manifest + " doesn't exist.\n" |
| exit(1) |
| |
| manifest = args.manifest |
| root_build_dir = args.root_build_dir |
| |
| # Prepend |base_manifest| contents to |manifest|. |
| deps_file = open(args.deps, 'w') |
| relative_path = os.path.relpath(args.manifest, root_build_dir) |
| deps_file.write('%s: ' % relative_path) |
| |
| out_file = open(manifest, 'w') |
| with open(base_manifest, 'r') as in_file: |
| base_content = in_file.readlines() |
| |
| for base_line in base_content: |
| out_file.write(base_line) |
| base_line_list = base_line.split("=") |
| if len(base_line_list) != 2: |
| print "Error: Base manifest line format error. Expected \"lhs=rhs\" but got: " + base_line |
| exit(1) |
| base_line_rhs = base_line_list[1].strip() |
| relative_path = os.path.relpath(base_line_rhs, root_build_dir) |
| deps_file.write(relative_path + " ") |
| |
| # Append all files discovered under |root_dir| to |manifest|. |
| files = subprocess.check_output(["find", root_dir, "-type", "f"]) |
| file_lines = files.splitlines() |
| |
| for file in file_lines: |
| source = file |
| if not source.startswith(root_dir): |
| print "Error: source path " + source + " is not under |root_dir|\n" |
| exit(1) |
| dest = source[len(root_dir):] |
| out_file.write('data%s=' % dest) |
| out_file.write('%s\n' % source) |
| relative_path = os.path.relpath(source, root_build_dir) |
| deps_file.write(relative_path + " ") |
| |
| out_file.close() |
| deps_file.close() |