Kumi
619d7e9fef
Some checks failed
/ chores (push) Failing after 16s
Casting `CHORES_EXPIRY_DAYS` environment variable to int ensures that the expiry days value is correctly interpreted for use throughout the application without type errors. This small but critical change guarantees consistent behavior when dealing with time-based logic. No issue reference provided.
51 lines
1.3 KiB
Python
51 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", "https://git.private.coffee")
|
|
|
|
try:
|
|
TOKEN = os.environ["FORGEJO_TOKEN"]
|
|
except KeyError:
|
|
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", "PrivateCoffee")
|
|
REPO_NAME = os.environ.get("CHORES_REPO_NAME", "chores")
|
|
EXPIRY_DAYS = int(os.environ.get("CHORES_EXPIRY_DAYS", 2))
|
|
CHORES = os.environ.get(
|
|
"CHORES_TEXT", "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"))
|