Kumi
623115295a
Some checks failed
/ chores (push) Failing after 14s
Refactored the assignment of FORGEJO_URL to use a more idiomatic fallback approach in case the environment variable is not set. This change ensures that None values are handled correctly and the default URL is used when the environment variable FORGEJO_URL is undefined, enhancing reliability.
54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
import pathlib
|
|
import json
|
|
import argparse
|
|
import os
|
|
import urllib.request
|
|
import logging
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
FORGEJO_URL = os.environ.get("FORGEJO_URL") or "https://git.private.coffee"
|
|
|
|
try:
|
|
TOKEN = os.environ["FORGEJO_TOKEN"]
|
|
assert TOKEN
|
|
except (KeyError, AssertionError):
|
|
logging.error("FORGEJO_TOKEN environment variable is required")
|
|
exit(1)
|
|
|
|
ASSIGNEES = os.environ.get("CHORES_ASSIGNEES").split()
|
|
REPO_OWNER = os.environ.get("CHORES_REPO_OWNER") or "PrivateCoffee"
|
|
REPO_NAME = os.environ.get("CHORES_REPO_NAME") or "chores"
|
|
EXPIRY_DAYS = int(os.environ.get("CHORES_EXPIRY_DAYS") or 2)
|
|
CHORES = (
|
|
os.environ.get("CHORES_TEXT")
|
|
or "Looks like you forgot to set the CHORES_TEXT environment variable."
|
|
)
|
|
|
|
|
|
due_date = (datetime.utcnow() + timedelta(days=EXPIRY_DAYS)).isoformat()
|
|
|
|
payload = {
|
|
"token": TOKEN,
|
|
"title": "Weekly Chores",
|
|
"body": CHORES,
|
|
"due_date": due_date,
|
|
}
|
|
|
|
if ASSIGNEES:
|
|
payload["assignees"] = ASSIGNEES
|
|
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"Accept": "application/json",
|
|
}
|
|
|
|
request = urllib.request.Request(
|
|
f"{FORGEJO_URL}/api/v1/repos/{REPO_OWNER}/{REPO_NAME}/issues",
|
|
data=json.dumps(payload).encode("utf-8"),
|
|
headers=headers,
|
|
method="POST",
|
|
)
|
|
|
|
with urllib.request.urlopen(request) as response:
|
|
print(response.read().decode("utf-8"))
|