pipelines/scripts/chores.py
Kumi 619d7e9fef
Some checks failed
/ chores (push) Failing after 16s
Ensure EXPIRY_DAYS is an integer from env variable
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.
2024-02-18 13:19:03 +01:00

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