66 lines
1.2 KiB
Bash
Executable file
66 lines
1.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Usage: new-note.sh "Note Title" [--mdx]
|
|
# Creates a new note in the Obsidian vault with correct frontmatter and folder structure.
|
|
# Use --mdx for notes that need a cover image or custom components (creates .mdx file).
|
|
set -euo pipefail
|
|
|
|
VAULT='/Users/adrian/Obsidian/Web/adrian-altner-com'
|
|
|
|
if [[ -z "${1:-}" ]]; then
|
|
echo "Usage: new-note.sh \"Note Title\" [--mdx]" >&2
|
|
exit 1
|
|
fi
|
|
|
|
TITLE="$1"
|
|
MDX=false
|
|
if [[ "${2:-}" == "--mdx" ]]; then
|
|
MDX=true
|
|
fi
|
|
|
|
SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9 -]//g' | sed 's/ \+/-/g' | sed 's/^-\+//;s/-\+$//')
|
|
DATE_FOLDER=$(date +%Y/%m/%d)
|
|
PUBLISH_DATE=$(date +%Y-%m-%d)
|
|
DIR="$VAULT/content/notes/$DATE_FOLDER"
|
|
|
|
if $MDX; then
|
|
EXT="mdx"
|
|
else
|
|
EXT="md"
|
|
fi
|
|
|
|
FILE="$DIR/$SLUG.$EXT"
|
|
|
|
mkdir -p "$DIR"
|
|
|
|
if [[ -f "$FILE" ]]; then
|
|
echo "File already exists: $FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if $MDX; then
|
|
cat > "$FILE" << EOF
|
|
---
|
|
title: "$TITLE"
|
|
publishDate: $PUBLISH_DATE
|
|
description: ""
|
|
cover: "./$SLUG.jpg"
|
|
coverAlt: ""
|
|
tags: []
|
|
draft: false
|
|
syndication:
|
|
---
|
|
EOF
|
|
else
|
|
cat > "$FILE" << EOF
|
|
---
|
|
title: "$TITLE"
|
|
publishDate: $PUBLISH_DATE
|
|
description: ""
|
|
tags: []
|
|
draft: false
|
|
syndication:
|
|
---
|
|
EOF
|
|
fi
|
|
|
|
echo "Created: $FILE"
|