| #!/usr/bin/env python3 |
| |
| """Utility to work with sample app device files. |
| |
| This utility helps with the following: |
| - Parsing sample app device files. |
| - Producing metadata files from sample app device files. |
| - Generating names for sample app device files. |
| |
| Usage: |
| python sample_app_util.py zap <ZAP_FILE> [options] |
| |
| python sample_app_util.py zap test_files/sample_zap_file.zap --generate-name |
| python sample_app_util.py zap test_files/sample_zap_file.zap --generate-metadata |
| """ |
| |
| import argparse |
| import os |
| import shutil |
| |
| import zap_file_parser |
| |
| |
| def zap_cmd_handler(args: argparse.Namespace) -> None: |
| """Handles args for zap_cmd_parser.""" |
| zap_file_path = args.zap_file |
| if args.generate_name: |
| print(zap_file_parser.generate_name(zap_file_path)) |
| elif args.rename_file: |
| name = zap_file_parser.generate_name(zap_file_path) |
| dirpath = os.path.dirname(zap_file_path) |
| output_path = os.path.join(dirpath, f"{name}.zap") |
| shutil.move(zap_file_path, output_path) |
| print(f"Renamed from: {zap_file_path} to {output_path}") |
| elif args.generate_hash_metadata: |
| created_file = zap_file_parser.generate_hash_metadata_file(zap_file_path) |
| print(f"Created {created_file}") |
| |
| |
| parser = argparse.ArgumentParser() |
| subparsers = parser.add_subparsers(dest="command") |
| subparsers.required = True |
| |
| zap_cmd_parser = subparsers.add_parser("zap", help="Command to operate on zap files.") |
| zap_cmd_parser.add_argument( |
| "zap_file", metavar="ZAP_FILE", type=str, help="Zap file to generate name for.") |
| |
| zap_cmd_group = zap_cmd_parser.add_mutually_exclusive_group() |
| |
| zap_cmd_group.add_argument( |
| "--generate-name", action="store_true", |
| help="Print the name file name according to the name convention" |
| ) |
| |
| zap_cmd_parser.add_argument( |
| "--generate-hash-metadata", action="store_true", |
| help=( |
| "Generate the hash metadata file which provide information about what was included in " |
| "the hash digest.") |
| ) |
| |
| zap_cmd_group.add_argument( |
| "--rename-file", action='store_true', |
| help="Rename the target zap file according to name convention." |
| ) |
| |
| zap_cmd_parser.set_defaults(func=zap_cmd_handler) |
| |
| |
| if __name__ == "__main__": |
| args = parser.parse_args() |
| args.func(args) |