You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.1KB

  1. import sys
  2. import json
  3. import os
  4. import glob
  5. import zipfile
  6. import shutil
  7. import build
  8. PACKAGES_DIR = "../packages"
  9. MANIFESTS_DIR = "manifests"
  10. plugin_packages = sys.argv[1:]
  11. slugs = set()
  12. for package_src in plugin_packages:
  13. # Open ZIP
  14. z = zipfile.ZipFile(package_src)
  15. manifest_src = [f for f in z.namelist() if f.endswith("/plugin.json")][0]
  16. # Read manifest
  17. with z.open(manifest_src) as f:
  18. manifest = json.load(f)
  19. # Review manifest
  20. print(json.dumps(manifest, indent=" "))
  21. input()
  22. # Write manifest
  23. slug = os.path.split(manifest_src)[0]
  24. manifest_dest = os.path.join(MANIFESTS_DIR, slug + ".json")
  25. with open(manifest_dest, "w") as f:
  26. json.dump(manifest, f, indent=" ")
  27. # Copy package
  28. package_dest = os.path.join(PACKAGES_DIR, os.path.basename(package_src))
  29. build.system(f"cp '{package_src}' '{package_dest}'")
  30. build.system(f"touch '{package_dest}'")
  31. slugs.add(slug)
  32. # Upload packages
  33. build.system(f"cd {PACKAGES_DIR} && make upload")
  34. # Commit repository
  35. build.system("git add manifests")
  36. slugs_list = ", ".join(slugs)
  37. build.system(f"git commit -m 'Update manifest for {slugs_list}'")
  38. build.system("git push")