this repo has no description
1#!/bin/bash
2set -o errexit
3set -o nounset
4set -o pipefail
5
6source "$(dirname "$0")/../pds.env"
7
8# PDS_HOSTNAME=
9
10# curl a URL and fail if the request fails.
11function curl_cmd_get {
12 curl --fail --silent --show-error "$@"
13}
14
15# curl a URL and fail if the request fails.
16function curl_cmd_post {
17 curl --fail --silent --show-error --request POST --header "Content-Type: application/json" "$@"
18}
19
20# curl a URL but do not fail if the request fails.
21function curl_cmd_post_nofail {
22 curl --silent --show-error --request POST --header "Content-Type: application/json" "$@"
23}
24
25USERNAME="${1:-}"
26
27if [[ "${USERNAME}" == "" ]]; then
28 read -p "Enter a username: " USERNAME
29fi
30
31if [[ "${USERNAME}" == "" ]]; then
32 echo "ERROR: missing USERNAME parameter." >/dev/stderr
33 echo "Usage: $0 ${SUBCOMMAND} <USERNAME>" >/dev/stderr
34 exit 1
35fi
36
37SESS_RESULT="$(curl_cmd_post \
38 --data "$(cat <<EOF
39{
40 "identifier": "$USERNAME",
41 "password": "password"
42}
43EOF
44 )" \
45 https://pds.tngl.boltless.dev/xrpc/com.atproto.server.createSession
46)"
47
48echo $SESS_RESULT | jq
49
50DID="$(echo $SESS_RESULT | jq --raw-output '.did')"
51ACCESS_JWT="$(echo $SESS_RESULT | jq --raw-output '.accessJwt')"
52
53function add_label_def {
54 local color=$1
55 local name=$2
56 echo $color
57 echo $name
58 local json_payload=$(cat <<EOF
59{
60 "repo": "$DID",
61 "collection": "sh.tangled.label.definition",
62 "rkey": "$name",
63 "record": {
64 "name": "$name",
65 "color": "$color",
66 "scope": ["sh.tangled.repo.issue"],
67 "multiple": false,
68 "createdAt": "2025-09-22T11:14:35+01:00",
69 "valueType": {"type": "null", "format": "any"}
70 }
71}
72EOF
73)
74 echo $json_payload
75 echo $json_payload | jq
76 RESULT="$(curl_cmd_post \
77 --data "$json_payload" \
78 -H "Authorization: Bearer ${ACCESS_JWT}" \
79 "https://${PDS_HOSTNAME}/xrpc/com.atproto.repo.createRecord")"
80 echo $RESULT | jq
81}
82
83add_label_def '#64748b' 'wontfix'
84add_label_def '#8B5CF6' 'good-first-issue'
85add_label_def '#ef4444' 'duplicate'
86add_label_def '#06b6d4' 'documentation'
87json_payload=$(cat <<EOF
88{
89 "repo": "$DID",
90 "collection": "sh.tangled.label.definition",
91 "rkey": "assignee",
92 "record": {
93 "name": "assignee",
94 "color": "#10B981",
95 "scope": ["sh.tangled.repo.issue", "sh.tangled.repo.pull"],
96 "multiple": false,
97 "createdAt": "2025-09-22T11:14:35+01:00",
98 "valueType": {"type": "string", "format": "did"}
99 }
100}
101EOF
102)
103curl_cmd_post \
104 --data "$json_payload" \
105 -H "Authorization: Bearer ${ACCESS_JWT}" \
106 "https://${PDS_HOSTNAME}/xrpc/com.atproto.repo.createRecord"