summaryrefslogtreecommitdiffstats
path: root/contrib/get-cursors.sh
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar memdmp <memdmpmemewarenet>2025-01-13 16:54:34 +0100
committerLibravatarLarge Libravatar memdmp <memdmpmemewarenet>2025-01-13 16:54:34 +0100
commit6e3b3c8013e6d8814dbf70c854e55d062bedbdf4 (patch)
tree5b07a6d26c349293bc61a71a32d6e368fed11c4e /contrib/get-cursors.sh
downloadbibata-cursor-cli-6e3b3c8013e6d8814dbf70c854e55d062bedbdf4.tar.gz
bibata-cursor-cli-6e3b3c8013e6d8814dbf70c854e55d062bedbdf4.tar.bz2
bibata-cursor-cli-6e3b3c8013e6d8814dbf70c854e55d062bedbdf4.tar.lz
bibata-cursor-cli-6e3b3c8013e6d8814dbf70c854e55d062bedbdf4.zip

chore: initial commit

HEADmaster
Diffstat (limited to 'contrib/get-cursors.sh')
-rwxr-xr-xcontrib/get-cursors.sh80
1 files changed, 80 insertions, 0 deletions
diff --git a/contrib/get-cursors.sh b/contrib/get-cursors.sh
new file mode 100755
index 0000000..755213a
--- /dev/null
+++ b/contrib/get-cursors.sh
@@ -0,0 +1,80 @@
+#!/bin/bash
+# Fetches bibata cursor svgs
+set -e
+
+start() {
+ _LAST_MSG="$@"
+ echo -e "\x1b[0;1;34m@\x1b[0;34m $@\x1b[0m"
+}
+complete() {
+ if [[ "$1" == "" ]]; then
+ complete "$_LAST_MSG"
+ else
+ echo -e "\x1b[0;1;32m+\x1b[0;32m $@\x1b[0m"
+ fi
+}
+err() {
+ if [[ "$1" == "" ]]; then
+ err "$_LAST_MSG"
+ else
+ echo -e "\x1b[0;1;31m!\x1b[0;31m $@\x1b[0m" 1>&2;
+ fi
+}
+info() {
+ echo -e "\x1b[0;1;94mi\x1b[0;94m $@\x1b[0m" 1>&2;
+}
+
+mkdir -p cursors
+for type in Modern Original; do
+ type_dir="cursors/$type"
+ type_meta="$type_dir/meta.json"
+ mkdir -p "$type_dir"
+ start "Get Cursor Metadata for CursorType($type)"
+ curl -fsSL "https://www.bibata.live/api/svg?type=${type}&v=1.0.2" | jq -M > "$type_meta"
+ complete
+
+ jq -Mc '.data[]' "$type_meta" | while read cursor_json; do
+ cursor_name="$(jq -r .name <<< "$cursor_json")"
+ cursor_dir="$type_dir/$cursor_name"
+ cursor_assets="$cursor_dir/assets"
+ cursor_meta="$cursor_dir/meta.json"
+ cursorfile="$cursor_dir/cursor.json"
+ mkdir -p "$cursor_dir" "$cursor_assets"
+ if [[ -f "$cursor_meta" ]] && [[ "$(jq -M "." "$cursor_meta" | sha512sum | awk '{print $1}')" == "$(jq -M "." <<< "$cursor_json" | sha512sum | awk '{print $1}')" ]]; then
+ start "Ensuring all keyframes for Cursor($type, $cursor_name) are present"
+ idx=0
+ jq -Mcr '.node_ids[]' "$cursor_meta" | while read node_id; do
+ node="Node($type, $cursor_name, Node($idx, $node_id))"
+ if ! [[ -f "$cursor_assets/$node_id.svg" ]]; then
+ cursor_url="$(jq -Mr ".urls[${idx}]" "$cursor_meta")"
+ start "Fetch missing $node - NodeIndex($idx)"
+ curl -fsSL "$cursor_url" -o "$cursor_assets/$node_id.svg"
+ ((idx=idx+1))
+ complete "Fetched missing $node"
+ else
+ info "$node is already present"
+ fi
+ done
+ complete "Ensured all keyframes for Cursor($type, $cursor_name) are present"
+ else
+ if [[ -f "$cursor_meta" ]]; then info "MetaFile($cursor_meta) already exists but differs (it has FileHash(sha512, $(jq -M "$cursor_meta" | sha512sum | awk '{print $1}')), new version has FileHash(sha512, $(jq -M <<< "$cursor_json" | sha512sum | awk '{print $1}')))"; mv "$cursor_meta"; fi
+ jq -M <<< "$cursor_json" > "$cursor_meta"
+ start "Get keyframes for Cursor($type, $cursor_name)"
+ idx=0
+ total=0
+ jq -Mcr '.node_ids[]' "$cursor_meta" | while read id; do
+ rm -f "$cursor_assets/$node_id.svg"
+ ((total=total+1))
+ done
+ jq -Mcr '.urls[]' "$cursor_meta" | while read cursor_url; do
+ node_id="$(jq -Mr ".node_ids[${idx}]" "$cursor_meta")"
+ node="Node($type, $cursor_name, Node($idx, $node_id))"
+ start "Fetch $node - NodeIndex($idx) of NodeCount($total)"
+ curl -fsSL "$cursor_url" -o "$cursor_assets/$node_id.svg"
+ ((idx=idx+1))
+ complete "Fetched $node"
+ done
+ complete "Got keyframes for Cursor($type, $cursor_name)"
+ fi
+ done
+done