mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
nix: bring back local release pin to update.py
Revert "nix: remove unused code from update.py"
This reverts commit 48dfd73c91
.
nix: update local release pin function in update.py
This commit is contained in:
parent
910e2e3c89
commit
0f575181ee
|
@ -2,18 +2,23 @@
|
||||||
|
|
||||||
# Update the Nix package pin
|
# Update the Nix package pin
|
||||||
#
|
#
|
||||||
# Usage: ./update.sh
|
# Usage: ./update.sh [PATH]
|
||||||
|
# When the [PATH] is not set, it will fetch the latest release from the repo.
|
||||||
|
# With [PATH] set, it will hash the given file and generate the URL,
|
||||||
|
# base on the version contained within the file
|
||||||
|
|
||||||
import base64
|
import base64
|
||||||
import json
|
import json
|
||||||
import hashlib
|
import hashlib
|
||||||
import sys
|
import sys
|
||||||
|
import tarfile
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
OUTPUT_FILE = Path("pin.json")
|
OUTPUT_FILE = Path("pin.json")
|
||||||
TARGET_ASSET = lambda version: f"copyparty-{version}.tar.gz"
|
TARGET_ASSET = lambda version: f"copyparty-{version}.tar.gz"
|
||||||
HASH_TYPE = "sha256"
|
HASH_TYPE = "sha256"
|
||||||
LATEST_RELEASE_URL = "https://api.github.com/repos/9001/copyparty/releases/latest"
|
LATEST_RELEASE_URL = "https://api.github.com/repos/9001/copyparty/releases/latest"
|
||||||
|
DOWNLOAD_URL = lambda version: f"https://github.com/9001/copyparty/releases/download/v{version}/{TARGET_ASSET(version)}"
|
||||||
|
|
||||||
|
|
||||||
def get_formatted_hash(binary):
|
def get_formatted_hash(binary):
|
||||||
|
@ -24,6 +29,16 @@ def get_formatted_hash(binary):
|
||||||
return f"{HASH_TYPE}-{encoded_hash}"
|
return f"{HASH_TYPE}-{encoded_hash}"
|
||||||
|
|
||||||
|
|
||||||
|
def version_from_tar_gz(path):
|
||||||
|
with tarfile.open(path) as tarball:
|
||||||
|
release_name = tarball.getmembers()[0].name
|
||||||
|
prefix = "copyparty-"
|
||||||
|
|
||||||
|
if release_name.startswith(prefix):
|
||||||
|
return release_name.replace(prefix, "")
|
||||||
|
raise ValueError("version not found in provided file")
|
||||||
|
|
||||||
|
|
||||||
def remote_release_pin():
|
def remote_release_pin():
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
@ -38,8 +53,21 @@ def remote_release_pin():
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def local_release_pin(path):
|
||||||
|
version = version_from_tar_gz(path)
|
||||||
|
download_url = DOWNLOAD_URL(version)
|
||||||
|
formatted_hash = get_formatted_hash(path.read_bytes())
|
||||||
|
|
||||||
|
result = {"url": download_url, "version": version, "hash": formatted_hash}
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
result = remote_release_pin()
|
if len(sys.argv) > 1:
|
||||||
|
asset_path = Path(sys.argv[1])
|
||||||
|
result = local_release_pin(asset_path)
|
||||||
|
else:
|
||||||
|
result = remote_release_pin()
|
||||||
|
|
||||||
print(result)
|
print(result)
|
||||||
json_result = json.dumps(result, indent=4)
|
json_result = json.dumps(result, indent=4)
|
||||||
|
|
Loading…
Reference in a new issue