feat: Working on presentation, new tapes, more run scripts.

This commit is contained in:
2024-12-30 14:45:49 -05:00
parent 7b8d236f03
commit 581e6cea64
28 changed files with 387 additions and 55 deletions

72
bin/run Executable file
View File

@@ -0,0 +1,72 @@
#!/bin/zsh
# Primary helper script for generating output for 'tapes'.
######################### Options #########################
zparseopts -D -E -- \
-who-dis-guy=whoami \
-show-stats=showstats \
-gimme-more-reasons=reasons \
-show-history=showhistory \
-show-me-the-chillers=showchillers \
-ask-chat-gpt:=askgpt \
-output:=outputFile
######################### Helpers #########################
function boxed_quote {
gum style --foreground 212 --border double \
--align center --margin "1 2" --padding "2 4" \
"$1"
}
function spinner {
gum spin --title "$1" -- sleep "${2:-5}"
}
function parseGpt {
local json=$1
local header=$2
local content=$(cat "files/$json" | jq '.["choices"][0]["message"]["content"]')
echo "$header\n$content" | gum format
}
function askChatGpt {
# note question needs to be json, this is generally prepared in the justfile.
local question=$1
local outputFile=$2
if [ ! -f "$outputFile" ]; then
# get ouptut from chat gpt, if file does not exists.
# this saves from calling gpt over and over when recreating tapes.
curl "https://api.openai.com/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${OPENAI_API_KEY}" \
-d "$question" \
> "$outputFile"
fi
}
######################### MAIN #########################
if [ ! -z "$whoami" ]; then
boxed_quote 'Great Question!!!'
spinner "Googling..."
elif [ ! -z "$showstats" ]; then
spinner "Computing stats..."
cat files/ShowStats.md | gum format
elif [ ! -z "$reasons" ]; then
spinner "Generating reasons..." 3
echo "# More Reasons\n- Learn concepts / similarities\n- Pros vs. Cons\n" | gum format
elif [ ! -z "$showhistory" ]; then
content=$(cat files/history.json | jq '.["choices"][0]["message"]["content"]')
echo "# Hydronic History\n$content" | gum format
elif [ ! -z "$showchillers" ]; then
content="$(parseGpt "chillers.json" "# Define Chillers")"
echo $content > files/chillers.md
gum pager < files/chillers.md
elif [ ! -z "$askgpt" ]; then
local question="${askgpt[-1]}"
local file="${outputFile[-1]}"
spinner "Asking ChatGPT..."
askChatGpt $question $file
fi