mkpkgindex.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env python3
  2. """
  3. Make TCL package index
  4. """
  5. import argparse
  6. import sys
  7. from pathlib import Path
  8. from typing import List
  9. def main(args: List[str]) -> int: # pylint: disable=C0116
  10. parser = argparse.ArgumentParser(description=__doc__)
  11. parser.add_argument(
  12. "--file",
  13. type=Path,
  14. required=True,
  15. help="final shared object file to be loaded (doesn't need to be installed)",
  16. )
  17. parser.add_argument(
  18. "--name",
  19. type=str,
  20. required=True,
  21. help="name of extension",
  22. )
  23. parser.add_argument(
  24. "--version",
  25. type=str,
  26. required=True,
  27. help="version of extension",
  28. )
  29. options = parser.parse_args(args[1:])
  30. # for non-release versions, convert the '~dev.' portion into something compliant
  31. # with TCL’s version number rules
  32. version = options.version.replace("~dev.", "b")
  33. with open("pkgIndex.tcl", "wt", encoding="utf-8") as f:
  34. f.write(f'package ifneeded {options.name} {version} "\n')
  35. if "tk" in str(options.file):
  36. f.write("\tpackage require Tk 8.3\n")
  37. f.write(f'\tload [file join $dir {options.file}] {options.name}"\n')
  38. if __name__ == "__main__":
  39. sys.exit(main(sys.argv))