forked from lda/telodendria
Add 'tp' tool.
I'm not doing much to document this, because it's mainly just an internal script. No normal person is going to be running it, it's really just for me.
This commit is contained in:
parent
3804bcf95a
commit
3cfc064913
1 changed files with 116 additions and 0 deletions
116
tools/bin/tp
Executable file
116
tools/bin/tp
Executable file
|
@ -0,0 +1,116 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
#
|
||||||
|
# tp: "Telodendria Patch"
|
||||||
|
#
|
||||||
|
# This script is used to manage the patch queue.
|
||||||
|
|
||||||
|
if [ -f "$(pwd)/.env" ]; then
|
||||||
|
. "$(pwd)/.env"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$TELODENDRIA_PUB" ]; then
|
||||||
|
echo "TELODENDRIA_PUB not set."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
TP_DIR="$TELODENDRIA_PUB/patches"
|
||||||
|
|
||||||
|
CURL="curl -s"
|
||||||
|
|
||||||
|
if [ ! -d "$TP_DIR" ]; then
|
||||||
|
echo "$TP_DIR does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
matrix_send() {
|
||||||
|
msg="$1"
|
||||||
|
if [ ! -z "$msg" ]; then
|
||||||
|
jq --null-input \
|
||||||
|
--arg body "$msg" \
|
||||||
|
--arg formatted_body "$msg" \
|
||||||
|
--arg format "org.matrix.custom.html" \
|
||||||
|
--arg msgtype "m.text" \
|
||||||
|
'{"body":$body,"formatted_body":$formatted_body,"format":$format,"msgtype":$msgtype}' |
|
||||||
|
$CURL -X PUT -d @- "$HOMESERVER/client/v3/rooms/$ROOM_ID/send/m.room.message/$(date +%s)?access_token=$ACCESS_TOKEN"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
matrix_get_files() {
|
||||||
|
$CURL "$HOMESERVER/client/v3/sync?access_token=$ACCESS_TOKEN" |
|
||||||
|
jq ".rooms.join.\"$ROOM_ID\".timeline.events[] | select(.type==\"m.room.message\") | .content | select(.msgtype==\"m.file\") | [.body,.info.size,.url] | @tsv" |
|
||||||
|
cut -d '"' -f 2 |
|
||||||
|
sed 's/\\t/,/g'
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
"ingress")
|
||||||
|
matrix_get_files | while IFS="," read -r file size url; do
|
||||||
|
server=$(echo "$url" | cut -d '/' -f 3)
|
||||||
|
id=$(echo "$url" | cut -d '/' -f 4)
|
||||||
|
ext=$(echo "$file" | rev | cut -d '.' -f 1 | rev)
|
||||||
|
|
||||||
|
if [ "$ext" != "patch" ] || [ "$size" -gt "$MAX_SIZE" ] || [ -f "$TP_DIR/ingress/$id.patch" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
$CURL -o "$TP_DIR/ingress/$id.patch" "$HOMESERVER/media/v3/download/$server/$id"
|
||||||
|
|
||||||
|
count=$(cat "$TP_DIR/count.txt")
|
||||||
|
count=$((count + 1))
|
||||||
|
cp "$TP_DIR/ingress/$id.patch" "$TP_DIR/p/$count.patch"
|
||||||
|
(
|
||||||
|
cd "$TP_DIR/queued"
|
||||||
|
ln -s "../p/$count.patch" "$count.patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "$count" > "$TP_DIR/count.txt"
|
||||||
|
|
||||||
|
matrix_send "Queued <code>$file</code> as <a href=\"https://telodendria.io/patches/p/$count.patch\">#$count</a>"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
"queue")
|
||||||
|
find "$TP_DIR/queued" -name '*.patch' | while IFS= read -r patch; do
|
||||||
|
n=$(basename "$patch" .patch)
|
||||||
|
echo "Patch #$n:"
|
||||||
|
head -n3 "$patch"
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
"view")
|
||||||
|
if [ -f "$TP_DIR/queued/$2.patch" ]; then
|
||||||
|
less "$TP_DIR/queued/$2.patch"
|
||||||
|
else
|
||||||
|
echo "Patch #$2 doesn't exist in the queue."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"apply")
|
||||||
|
if [ -f "$TP_DIR/queued/$2.patch" ]; then
|
||||||
|
patch < "$TP_DIR/queued/$2.patch"
|
||||||
|
else
|
||||||
|
echo "Patch #$2 doesn't exist in the queue."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"reverse")
|
||||||
|
if [ -f "$TP_DIR/queued/$2.patch" ]; then
|
||||||
|
patch -R < "$TP_DIR/queued/$2.patch"
|
||||||
|
else
|
||||||
|
echo "Patch #$2 doesn't exist in the queue."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"accept"|"reject")
|
||||||
|
if [ -f "$TP_DIR/queued/$2.patch" ]; then
|
||||||
|
mv "$TP_DIR/queued/$2.patch" "$TP_DIR/${1}ed/$2.patch"
|
||||||
|
matrix_send "Patch <a href=\"https://telodendria.io/patches/p/$2.patch\">#$2</a> was marked as ${1}ed."
|
||||||
|
else
|
||||||
|
echo "Patch #$2 doesn't exist in the queue."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "No action specified."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in a new issue