Kumi
e575fd9e08
- Initialized .gitignore to exclude virtual environment - Added a comprehensive chores checklist as a markdown file - Introduced development dependencies (ruff, black) in requirements-dev.txt - Updated chores script to read tasks from the markdown file instead of an environment variable, improving task organization and maintainability
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import pathlib
|
|
import json
|
|
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 = (pathlib.Path(__file__).parent.parent / "assets" / "chores.md").read_text()
|
|
|
|
due_date = (datetime.utcnow() + timedelta(days=EXPIRY_DAYS)).isoformat().split(".")[
|
|
0
|
|
] + "Z"
|
|
|
|
payload = {
|
|
"title": "Weekly Chores",
|
|
"body": CHORES,
|
|
"due_date": due_date,
|
|
}
|
|
|
|
if ASSIGNEES:
|
|
payload["assignees"] = ASSIGNEES
|
|
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"Accept": "application/json",
|
|
"Authorization": "token " + TOKEN,
|
|
}
|
|
|
|
print(f"Creating issue with payload:\n{payload}")
|
|
|
|
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"))
|