| #!/usr/bin/env python3 |
| # Copyright 2022 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| from pathlib import Path |
| import argparse |
| import sys |
| |
| |
| def get_relative_file_paths(manifest_path, pkg_dir): |
| prefix = f"file:{pkg_dir}/" |
| file_set = set() |
| |
| with open(manifest_path, encoding="utf8") as f: |
| for abs_path in map(str.strip, f): |
| assert abs_path.startswith( |
| prefix |
| ), f"unexpected manifest entry: {abs_path}\nshould start with: {prefix}" |
| |
| # Trim to a relative path |
| file_set.add(abs_path[len(prefix) :]) |
| |
| return file_set |
| |
| |
| def generate_manifest_file_paths(args): |
| pkg_dir = args.pkg_dir |
| if os.name == "nt": |
| pkg_dir = pkg_dir.replace("\\", "/").replace("C:", "/C") |
| |
| total_file_set = set() |
| for manifest in args.manifests.split(","): |
| manifest_path = Path(args.pkg_dir) / "lib" / "rustlib" / manifest |
| total_file_set |= get_relative_file_paths(manifest_path, pkg_dir) |
| |
| for file_path in total_file_set: |
| print(file_path) |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser() |
| subparsers = parser.add_subparsers() |
| |
| parser_manifests = subparsers.add_parser("read_manifests") |
| |
| parser_manifests.add_argument( |
| "--manifests", help="manifests to source files from", required=True |
| ) |
| parser_manifests.add_argument( |
| "--pkg-dir", help="absolute package directory", required=True |
| ) |
| |
| parser_manifests.set_defaults(func=generate_manifest_file_paths) |
| |
| args = parser.parse_args() |
| args.func(args) |
| |
| return 0 |
| |
| |
| if __name__ == "__main__": |
| sys.exit(main()) |