Files
Wiki/task
T

144 lines
3.8 KiB
Bash
Executable File

#!/bin/bash
set -e
if [[ -a ".env" ]]; then
export $(cat .env | sed 's/^#.*//g' | xargs)
fi
function help() {
echo
echo "task <command> [options]"
echo
echo "commands:"
echo
CMD_WIDTH=20
OPT_WIDTH=6
DESC_WIDTH=45
COLUMN="| %-${CMD_WIDTH}s | %-${OPT_WIDTH}s | %-${DESC_WIDTH}s |\n"
printf "$COLUMN" "Command" "Option" "Description"
echo "|$(printf '%*s' $((CMD_WIDTH + 2)) '' | tr ' ' '-')|$(printf '%*s' $((OPT_WIDTH + 2)) '' | tr ' ' '-')|$(printf '%*s' $((DESC_WIDTH + 2)) '' | tr ' ' '-')|"
printf "$COLUMN" "install" "" "Install build dependencies."
printf "$COLUMN" "update" "" "Update build dependencies."
printf "$COLUMN" "dev-vuepress" "" "Start vuepress development server."
printf "$COLUMN" "build-vuepress" "" "Create vuepress build."
printf "$COLUMN" "serve-vuepress" "" "Serve vuepress build."
printf "$COLUMN" "convert-files" "" "Convert markdown wiki links to normal link."
printf "$COLUMN" "convert-canvas" "" "Convert canvas files to svg."
printf "$COLUMN" "generate-bases-views" "" "Generate markdown tables from bases."
printf "$COLUMN" "delete-bases-views" "" "Delete bases markdown files."
printf "$COLUMN" "review-notes" "" "Open a random note reviewed note."
printf "$COLUMN" "lint" "" "Lint code with prettier."
}
if [ -d "$HOME/taskfile.build/bin" ]; then
for file in "$HOME/taskfile.build/bin/"*; do
if [ -f "$file" ]; then
source "$file"
fi
done
fi
function review-notes() {
VAULT_PATH="$(pwd)"
REVIEW_LOG="$VAULT_PATH/review-note.csv"
if [[ ! -f "$REVIEW_LOG" ]]; then
echo "Init review log."
echo "note_name,timestamp" > "$REVIEW_LOG"
fi
echo "Get reviewed files."
REVIEWED_FILES=$(cut -d',' -f1 "$REVIEW_LOG" | tail -n +2)
echo "Find all markdown files."
MD_FILES=$(find . -type f -name "*.md" | grep -vFf <(git check-ignore -v $(find . -type d) | awk '{print $2}'))
echo "Filter unreviewed files."
UNREVIEWED_FILES=$(echo "$MD_FILES")
if [[ -z "$UNREVIEWED_FILES" ]]; then
echo "No new files to review!"
return
fi
echo "Pick a random file."
SELECTED_FILE=$(echo "$UNREVIEWED_FILES" | shuf -n 1)
NOTE_NAME=$(basename "$SELECTED_FILE" .md)
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
ENCODED_FILE=$(echo -n "$NOTE_NAME" | jq -sRr @uri)
echo "Encode '$NOTE_NAME' to '$ENCODED_FILE'"
echo "Opening obsidian://open?vault=$(basename "$PWD")&file=$ENCODED_FILE"
obsidian "obsidian://open?vault=$(basename "$PWD")&file=$ENCODED_FILE" &
echo "Log the review."
echo "\"$NOTE_NAME\",\"$TIMESTAMP\"" >> "$REVIEW_LOG"
}
function install() {
pnpm install
}
function update() {
pnpm install -D @vuepress/bundler-vite@next
pnpm install -D @vuepress/client@next
pnpm install -D @vuepress/plugin-docsearch@next
pnpm install -D @vuepress/plugin-search@next
pnpm install -D @vuepress/plugin-shiki@next
pnpm install -D @vuepress/theme-default@next
pnpm install -D @vuepress/utils@next
pnpm install -D vuepress@next
}
function dev-vuepress() {
pnpm run pre-build
open-url 'http://localhost:8081/'
pnpm run dev
}
function build-vuepress() {
pnpm run build
}
function serve-vuepress() {
cd ./src/.vuepress/dist
pnpx serve
}
function generate-bases-views() {
node generate-bases-views.js
}
function delete-bases-views() {
node delete-bases-views.js
}
function convert-files() {
node build.js vuepress
node build.js convert
node build.js attachments
}
function convert-canvas() {
node build.js canvas