52 lines
1.3 KiB
Python
52 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 = 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"))
|