59 lines
2.0 KiB
Plaintext
59 lines
2.0 KiB
Plaintext
|
def update_pkg(req):
|
||
|
if req.headers["X-Gitea-Event"][0] != "release":
|
||
|
return {"code": 400, "body": "This plugin only accepts release events"}
|
||
|
|
||
|
body = json.decode(req.body.string())
|
||
|
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)
|
||
|
|
||
|
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
|