sample_app_util.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/env python3
  2. """Utility to work with sample app device files.
  3. This utility helps with the following:
  4. - Parsing sample app device files.
  5. - Producing metadata files from sample app device files.
  6. - Generating names for sample app device files.
  7. Usage:
  8. python sample_app_util.py zap <ZAP_FILE> [options]
  9. python sample_app_util.py zap test_files/sample_zap_file.zap --generate-name
  10. python sample_app_util.py zap test_files/sample_zap_file.zap --generate-metadata
  11. """
  12. import argparse
  13. import os
  14. import shutil
  15. import zap_file_parser
  16. def zap_cmd_handler(args: argparse.Namespace) -> None:
  17. """Handles args for zap_cmd_parser."""
  18. zap_file_path = args.zap_file
  19. if args.generate_name:
  20. print(zap_file_parser.generate_name(zap_file_path))
  21. elif args.rename_file:
  22. name = zap_file_parser.generate_name(zap_file_path)
  23. dirpath = os.path.dirname(zap_file_path)
  24. output_path = os.path.join(dirpath, f"{name}.zap")
  25. shutil.move(zap_file_path, output_path)
  26. print(f"Renamed from: {zap_file_path} to {output_path}")
  27. elif args.generate_metadata:
  28. created_file = zap_file_parser.generate_metadata_file(zap_file_path)
  29. print(f"Created {created_file}")
  30. parser = argparse.ArgumentParser()
  31. subparsers = parser.add_subparsers(dest="command")
  32. subparsers.required = True
  33. zap_cmd_parser = subparsers.add_parser(
  34. "zap", help="Command to operate on zap files.")
  35. zap_cmd_parser.add_argument(
  36. "zap_file", metavar="ZAP_FILE", type=str, help="Zap file to generate name for.")
  37. zap_cmd_group = zap_cmd_parser.add_mutually_exclusive_group()
  38. zap_cmd_group.add_argument(
  39. "--generate-name", action="store_true",
  40. help="Print the name file name according to the name convention"
  41. )
  42. zap_cmd_parser.add_argument(
  43. "--generate-metadata", action="store_true",
  44. help=(
  45. "Generate the metadata file which provides summary information about the app.")
  46. )
  47. zap_cmd_group.add_argument(
  48. "--rename-file", action='store_true',
  49. help="Rename the target zap file according to name convention."
  50. )
  51. zap_cmd_parser.set_defaults(func=zap_cmd_handler)
  52. if __name__ == "__main__":
  53. args = parser.parse_args()
  54. args.func(args)