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["PIPELINES_TOKEN"] except KeyError: logging.error("PIPELINES_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 = 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"))