meow
This commit is contained in:
@@ -8,6 +8,7 @@ import re
|
||||
import subprocess
|
||||
import subprocess_tee
|
||||
import sys
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
@@ -26,6 +27,10 @@ def git(*args, check=True):
|
||||
return run("git", *args, check=check, capture_output=True)
|
||||
|
||||
|
||||
class GiteaError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def gitea(method, path, body=None):
|
||||
url = f'{os.environ["API"]}/repos/{os.environ["REPO"]}{path}'
|
||||
data = json.dumps(body).encode() if body is not None else None
|
||||
@@ -37,7 +42,11 @@ def gitea(method, path, body=None):
|
||||
with urllib.request.urlopen(req) as resp:
|
||||
raw = resp.read()
|
||||
except urllib.error.HTTPError as e:
|
||||
sys.exit(f"gitea {method} {path}: {e.code} {e.reason}\n{e.read().decode()}")
|
||||
try:
|
||||
detail = json.loads(e.read()).get("message", e.reason)
|
||||
except (json.JSONDecodeError, UnicodeDecodeError):
|
||||
detail = e.reason
|
||||
raise GiteaError(f"{method} {path}: {e.code} {detail}") from None
|
||||
return json.loads(raw) if raw else None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user