updater-plugins/lure-bin.star

59 lines
2.0 KiB
Plaintext

def get_checksums(download_url):
checksum_url = download_url + "/checksums.txt"
res = http.get(checksum_url)
lines = res.body.string().split("\n")
res.body.close()
checksum_list = [item.split(" ") for item in lines]
checksums = [(checksum[1], checksum[0]) for checksum in checksum_list if len(checksum) == 2]
return checksums
def update_pkg(req):
if req.headers["X-Gitea-Event"][0] != "release":
return {"code": 400, "body": "This plugin only accepts release events"}
body = req.body.read_json()
req.body.close()
if body["action"] != "published":
return {"code": 400, "body": "This plugin only accepts release publish events"}
name = body["release"]["name"]
url = body["repository"]["html_url"]
download_url = url + "/releases/download/" + name
checksums = get_checksums(download_url)
items = {}
for filename, checksum in checksums:
if ".tar.gz" not in filename:
continue
if "aarch64" in filename:
items["arm64"] = (filename, checksum)
elif "armv6" in filename:
items["arm"] = (filename, checksum)
elif "i386" in filename:
items["386"] = (filename, checksum)
elif "riscv64" in filename:
items["riscv64"] = (filename, checksum)
elif "x86_64" in filename:
items["amd64"] = (filename, checksum)
tmpl = updater.get_package_file("lure-bin", "lure.tmpl.sh")
updater.write_package_file("lure-bin", "lure.sh", tmpl % (
name[1:],
download_url + "/" + items["arm64"][0],
items["arm64"][1],
download_url + "/" + items["arm"][0],
items["arm"][1],
download_url + "/" + items["amd64"][0],
items["amd64"][1],
download_url + "/" + items["386"][0],
items["386"][1],
download_url + "/" + items["riscv64"][0],
items["riscv64"][1],
))
updater.push_changes("upg(lure-bin): %s" % name[1:])
register_webhook(update_pkg)