From d78e78be761ded1ba7c3e1dcc6c52587ea16e2b0 Mon Sep 17 00:00:00 2001 From: Sage Vaillancourt Date: Mon, 23 Sep 2024 08:41:25 -0400 Subject: [PATCH] Add git-worked, and some cache-related shell funcs --- .gitignore | 1 + fake_home/.bin/ffx.sh | 1 + fake_home/.shell_aliases | 83 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) diff --git a/.gitignore b/.gitignore index 247f5e9..b6ef7ee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +git-mirror-machine/ .idea/ *.swp *.zip diff --git a/fake_home/.bin/ffx.sh b/fake_home/.bin/ffx.sh index b45ff2a..36ffa3b 100755 --- a/fake_home/.bin/ffx.sh +++ b/fake_home/.bin/ffx.sh @@ -1,6 +1,7 @@ #!/bin/bash RUN_FIREFOX="MOZ_ENABLE_WAYLAND=1 setsid $HOME/.bin/firefox-developer-edition/firefox-bin" +echo "$RUN_FIREFOX" kill $(pgrep firefox) current_date="$(date '+%D')" diff --git a/fake_home/.shell_aliases b/fake_home/.shell_aliases index 9e532f4..739f40f 100755 --- a/fake_home/.shell_aliases +++ b/fake_home/.shell_aliases @@ -10,6 +10,81 @@ fi alias _slides="$(which slides 2> /dev/null || echo "echo 'slides not installed'")" +CASCH_DIR="$HOME/.casch" +CASCH_MAP="$CASCH_DIR/.base-map.json" + +function git-worked { + author="$1" + since="$2" + + if [[ "$author" == "" ]]; then + author="Sage" + fi + if [[ "$since" == "" ]]; then + since="1 year ago" + fi + + cd "$HOME/git" + local first=true + for l in $(find -maxdepth 1 -mindepth 1 -type d | grep -v ' '); do + cd ~/git + cd $l + if ! test -d .git; then + continue + fi + local LIST="$(git rev-list --oneline --author="$author" --since="$since" HEAD)" + if [[ "$(echo -E "$LIST" | wc -l)" > 1 ]]; then + if ! $first; then + echo + fi + first=false + echo -E $l + echo -E "$LIST" + fi + done + cd ~/git +} + +function touch-cache { + local lastUpdate="$(date '+%s')" + mkdir -p "$CASCH_DIR" + test -f "$CASCH_MAP" || echo '{}' > "$CASCH_MAP" + + jq --arg cachedCommand "$1" --arg filename "$2" --arg lastUpdate "$lastUpdate" '.+={($cachedCommand): {$filename, $lastUpdate}}' "$CASCH_MAP" > "$CASCH_DIR/.tempbase.json" + mv "$CASCH_DIR/.tempbase.json" "$CASCH_MAP" +} + +function timer { + for i in {0..$(($1-1))}; do + echo $(($1-$i)) + sleep 1 + clear + done + cvlc --play-and-exit "$HOME/Downloads/bonk.ogg" &> /dev/null +} + +function cache-is-older-than { + local currentTime="$(date '+%s')" + local lastUpdate="$(jq -r --arg cachedCommand "$1" '.[$cachedCommand].lastUpdate' "$CASCH_MAP")" + local olderThanSec="$2" + if [[ "$lastUpdate" == "null" ]]; then + return 0 + fi + (($currentTime-$olderThanSec>$lastUpdate)) +} + +function cache-run { + local cacheFile="$CASCH_DIR/$@" + if cache-is-older-than "$@" 300; then + $@ | tee "$cacheFile" + touch-cache "$@" "$cacheFile" + else + cat "$cacheFile" + fi +} + +alias cr='cache-run' + function roll { local count=1 if [[ "$2" != "" ]]; then @@ -191,6 +266,14 @@ alias tmux="tmux attach || tmux" alias caddyfile="sudo vim /etc/caddy/Caddyfile" alias cf="sudo vim /etc/caddy/Caddyfile" +function v { + if test -f "$1"; then + vim "$1" + else + vim $1* + fi +} + function download-channel { yt-dlp "$1" --format 'bestvideo[height=1080]+bestaudio/best' --download-archive archive.txt --output '%(uploader)s/%(upload_date)s.%(title)s.%(id)s.%(ext)s' --restrict-filenames --merge-output-format mkv --ignore-errors }