pipelines/scripts/chores.py
Kumi e575fd9e08
feat: automate weekly chores management
- 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
2024-07-28 20:41:30 +02:00

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"))