mirror of
https://github.com/franklai/synologylyric.git
synced 2025-07-24 09:59:29 +00:00
77 lines
2.1 KiB
Python
Executable File
77 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from contextlib import contextmanager
|
|
import json
|
|
import logging
|
|
import os
|
|
import sys
|
|
import tarfile
|
|
|
|
extension_name = "aum"
|
|
current_dir = os.path.dirname(__file__)
|
|
archive_root = os.path.join(current_dir, "..", "archive")
|
|
src_root = os.path.join(current_dir, "..", "src")
|
|
common_file = "FujirouCommon.php"
|
|
info_file = "INFO"
|
|
|
|
|
|
def tar_reset(tarinfo):
|
|
tarinfo.uid = tarinfo.gid = 99
|
|
tarinfo.uname = tarinfo.gname = "nobody"
|
|
return tarinfo
|
|
|
|
|
|
def do_tar(info_path):
|
|
module_dir = os.path.dirname(info_path)
|
|
|
|
if not os.path.exists(info_path):
|
|
logging.error("INFO file does not exists. {}".format(info_path))
|
|
return False
|
|
|
|
text = open(info_path, "rb").read()
|
|
obj = json.loads(text)
|
|
|
|
# key exists check
|
|
if "module" not in obj or "version" not in obj:
|
|
return False
|
|
|
|
module_name = obj["name"]
|
|
module_file = obj["module"]
|
|
module_path = os.path.join(module_dir, module_file)
|
|
|
|
module_version = obj["version"]
|
|
common_path = os.path.join(module_dir, common_file)
|
|
archive_file = "%s-%s.%s" % (module_name, module_version, extension_name)
|
|
archive_path = os.path.abspath(os.path.join(archive_root, archive_file))
|
|
|
|
with tarfile.open(archive_path, "w:gz") as tar:
|
|
tar.add(module_path, arcname=module_file, filter=tar_reset)
|
|
tar.add(info_path, arcname=info_file, filter=tar_reset)
|
|
tar.add(common_path, arcname=common_file, filter=tar_reset)
|
|
|
|
print("create archive {}".format(archive_path))
|
|
print("including:")
|
|
print("\t{} - {}".format(module_file, module_path))
|
|
print("\t{} - {}".format(info_file, info_path))
|
|
print("\t{} - {}".format(common_file, common_path))
|
|
|
|
|
|
def print_usage():
|
|
print("%s [module json path]\n" % (os.path.basename(__file__)))
|
|
|
|
sys.exit(0)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
argv = sys.argv
|
|
|
|
if len(argv) < 2:
|
|
print_usage()
|
|
sys.exit(-1)
|
|
|
|
json_path = argv[1]
|
|
if not os.path.exists(json_path):
|
|
print("path {} not exists".format(json_path))
|
|
sys.exit(-1)
|
|
|
|
do_tar(os.path.abspath(json_path))
|