blob: 192c2900f3f2461cf0e4feaa252dafb55b7b6f6c [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2023 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 argparse
import json
import os
import sys
USAGE = """Rebases the 'path' fields within a GN JSON metadata file, assuming
the contents are a list of entries with a top-level "path" field, and that path
value is relative to the build directory.
"""
def main():
parser = argparse.ArgumentParser(usage=USAGE)
parser.add_argument(
"--root-build-dir",
help="Path to the root of the build directory (i.e., what metadata paths are currently relative to)",
required=True,
)
parser.add_argument(
"--new-base",
help="New base path to rebase metadata paths against",
required=True,
)
parser.add_argument(
"--metadata",
metavar="FILE",
help="Path at which to find the image metadata JSON file",
required=True,
)
parser.add_argument(
"--output",
metavar="FILE",
help="Path at which to output the metadata file with rebases paths",
required=True,
)
args = parser.parse_args()
with open(args.metadata) as f:
metadata = json.load(f)
for idx, _ in enumerate(metadata):
path = os.path.join(args.root_build_dir, metadata[idx]["path"])
metadata[idx]["path"] = os.path.relpath(path, args.new_base)
with open(args.output, "w") as f:
json.dump(metadata, f, indent=4)
return 0
if __name__ == "__main__":
sys.exit(main())