mirror of
https://github.com/YunoHost/example_ynh.git
synced 2024-09-03 20:06:13 +02:00
iter_content on a sane size, 10k, instead of byte per byte. Also add timeouts on requests.
This commit is contained in:
parent
7631a38ec4
commit
eb19ba61e2
1 changed files with 7 additions and 5 deletions
12
.github/workflows/updater.py
vendored
12
.github/workflows/updater.py
vendored
|
@ -13,10 +13,9 @@ import hashlib
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import re
|
|
||||||
from subprocess import run, PIPE
|
from subprocess import run, PIPE
|
||||||
import textwrap
|
import textwrap
|
||||||
from typing import List, Tuple, Any
|
from typing import Tuple, Any
|
||||||
import requests
|
import requests
|
||||||
from packaging import version
|
from packaging import version
|
||||||
|
|
||||||
|
@ -35,7 +34,7 @@ def get_latest_version(repo: str) -> Tuple[version.Version, Any]:
|
||||||
api_url = repo.replace("github.com", "api.github.com/repos")
|
api_url = repo.replace("github.com", "api.github.com/repos")
|
||||||
|
|
||||||
# Maintainer: use either releases or tags
|
# Maintainer: use either releases or tags
|
||||||
tags = requests.get(f"{api_url}/tags").json()
|
tags = requests.get(f"{api_url}/tags", timeout=3).json()
|
||||||
tag_info = next(
|
tag_info = next(
|
||||||
tag for tag in tags
|
tag for tag in tags
|
||||||
if "-rc" not in tag["name"] and "REL" not in tag["name"]
|
if "-rc" not in tag["name"] and "REL" not in tag["name"]
|
||||||
|
@ -43,7 +42,7 @@ def get_latest_version(repo: str) -> Tuple[version.Version, Any]:
|
||||||
return version.Version(tag_info["name"]), tag_info
|
return version.Version(tag_info["name"]), tag_info
|
||||||
|
|
||||||
# Maintainer: use either releases or tags
|
# Maintainer: use either releases or tags
|
||||||
releases = requests.get(f"{api_url}/releases").json()
|
releases = requests.get(f"{api_url}/releases", timeout=3).json()
|
||||||
release_info = next(
|
release_info = next(
|
||||||
release for release in releases
|
release for release in releases
|
||||||
if not release["prerelease"]
|
if not release["prerelease"]
|
||||||
|
@ -67,10 +66,11 @@ def generate_src_files(repo: str, release: Any):
|
||||||
def sha256sum_of_url(url: str) -> str:
|
def sha256sum_of_url(url: str) -> str:
|
||||||
"""Compute checksum without saving the file"""
|
"""Compute checksum without saving the file"""
|
||||||
checksum = hashlib.sha256()
|
checksum = hashlib.sha256()
|
||||||
for chunk in requests.get(url, stream=True).iter_content():
|
for chunk in requests.get(url, stream=True, timeout=1000).iter_content(10*1024):
|
||||||
checksum.update(chunk)
|
checksum.update(chunk)
|
||||||
return checksum.hexdigest()
|
return checksum.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
def write_src_file(name: str, asset_url: str, extension: str,
|
def write_src_file(name: str, asset_url: str, extension: str,
|
||||||
extract: bool = True, subdir: bool = True) -> None:
|
extract: bool = True, subdir: bool = True) -> None:
|
||||||
"""Rewrite conf/app.src"""
|
"""Rewrite conf/app.src"""
|
||||||
|
@ -86,6 +86,7 @@ def write_src_file(name: str, asset_url: str, extension: str,
|
||||||
SOURCE_EXTRACT={str(extract).lower()}
|
SOURCE_EXTRACT={str(extract).lower()}
|
||||||
"""))
|
"""))
|
||||||
|
|
||||||
|
|
||||||
def write_github_env(proceed: bool, new_version: str, branch: str):
|
def write_github_env(proceed: bool, new_version: str, branch: str):
|
||||||
"""Those values will be used later in the workflow"""
|
"""Those values will be used later in the workflow"""
|
||||||
if "GITHUB_ENV" not in os.environ:
|
if "GITHUB_ENV" not in os.environ:
|
||||||
|
@ -98,6 +99,7 @@ def write_github_env(proceed: bool, new_version: str, branch: str):
|
||||||
PROCEED={str(proceed).lower()}
|
PROCEED={str(proceed).lower()}
|
||||||
"""))
|
"""))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
with open("manifest.json", "r", encoding="utf-8") as manifest_file:
|
with open("manifest.json", "r", encoding="utf-8") as manifest_file:
|
||||||
manifest = json.load(manifest_file)
|
manifest = json.load(manifest_file)
|
||||||
|
|
Loading…
Add table
Reference in a new issue