blob: 948ab0089c7b05cb17f36e341841d374b524621c [file] [log] [blame]
#!/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())