Add quotes script and README
This commit is contained in:
parent
b71482c4ce
commit
941056b134
2 changed files with 114 additions and 0 deletions
|
|
@ -6,6 +6,14 @@ The issue with Anytype (and Notion) is that there are too many clicks needed.
|
||||||
While Notion has better automation, I think nothing can beat the functionality of just scripts.
|
While Notion has better automation, I think nothing can beat the functionality of just scripts.
|
||||||
That and the fact that I want to have all the files as markdown in case I want to search/collect statistics or plots/process with a local llm inspired this project.
|
That and the fact that I want to have all the files as markdown in case I want to search/collect statistics or plots/process with a local llm inspired this project.
|
||||||
|
|
||||||
|
**This is mostly AI generated**
|
||||||
|
|
||||||
|
## Why use AI for this?
|
||||||
|
|
||||||
|
I generally try to avoid AI for personal projects in an attempt to stay mentally sharp and keep my programming skills up.
|
||||||
|
The functionality here are mainly basic automations that aren't very interesting to do by hand.
|
||||||
|
Since I want to try and use my time on more interesting problems, I don't feel too bad using AI for these.
|
||||||
|
|
||||||
## Functionality and status
|
## Functionality and status
|
||||||
|
|
||||||
Here is the list of functionality that I'm working towards.
|
Here is the list of functionality that I'm working towards.
|
||||||
|
|
|
||||||
106
quotes
Executable file
106
quotes
Executable file
|
|
@ -0,0 +1,106 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
QUOTES_FILE="${QUOTES_FILE:-$HOME/.local/share/os/quotes.txt}"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<'EOF'
|
||||||
|
Usage: quotes.sh <command> [args]
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
add <quote> <author> Add a quote as: quote {{ author }}
|
||||||
|
today Print today's deterministic quote
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
trim() {
|
||||||
|
local value="$1"
|
||||||
|
value="${value#"${value%%[![:space:]]*}"}"
|
||||||
|
value="${value%"${value##*[![:space:]]}"}"
|
||||||
|
printf '%s' "$value"
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_file() {
|
||||||
|
mkdir -p "$(dirname "$QUOTES_FILE")"
|
||||||
|
|
||||||
|
if [ ! -e "$QUOTES_FILE" ]; then
|
||||||
|
touch "$QUOTES_FILE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
add_quote() {
|
||||||
|
if [ "$#" -ne 2 ]; then
|
||||||
|
echo 'Usage: quotes.sh add <quote> <author>' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
ensure_file
|
||||||
|
|
||||||
|
local quote author
|
||||||
|
quote="$(trim "$1")"
|
||||||
|
author="$(trim "$2")"
|
||||||
|
|
||||||
|
if [ -z "$quote" ] || [ -z "$author" ]; then
|
||||||
|
echo 'Quote and author must be non-empty' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$quote" == *$'\n'* ]] || [[ "$author" == *$'\n'* ]]; then
|
||||||
|
echo 'Quote and author must be single-line values' >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -s "$QUOTES_FILE" ] && [ "$(tail -c 1 "$QUOTES_FILE" 2>/dev/null || true)" != $'\n' ]; then
|
||||||
|
printf '\n' >> "$QUOTES_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '%s {{ %s }}\n' "$quote" "$author" >> "$QUOTES_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
today_quote() {
|
||||||
|
ensure_file
|
||||||
|
|
||||||
|
local day hash
|
||||||
|
day="$(date +%F)"
|
||||||
|
hash="$(printf '%s' "$day" | cksum | awk '{print $1}')"
|
||||||
|
|
||||||
|
awk -v hash="$hash" '
|
||||||
|
NF { lines[count++] = $0 }
|
||||||
|
END {
|
||||||
|
if (count == 0) {
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
line = lines[hash % count]
|
||||||
|
if (match(line, / \{\{ .* \}\}$/)) {
|
||||||
|
quote = substr(line, 1, RSTART - 1)
|
||||||
|
author = substr(line, RSTART)
|
||||||
|
sub(/^ \{\{ /, "", author)
|
||||||
|
sub(/ \}\}$/, "", author)
|
||||||
|
printf "%s\n-- %s\n", quote, author
|
||||||
|
} else {
|
||||||
|
print line
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' "$QUOTES_FILE" || {
|
||||||
|
echo "No quotes found in $QUOTES_FILE" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${1:-}" in
|
||||||
|
add)
|
||||||
|
shift
|
||||||
|
add_quote "$@"
|
||||||
|
;;
|
||||||
|
today|daily)
|
||||||
|
today_quote
|
||||||
|
;;
|
||||||
|
-h|--help|help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
usage >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Loading…
Add table
Add a link
Reference in a new issue