adrian-altner.com/scripts/new-note.sh
Adrian Altner 89113060ea
Some checks are pending
🪞 Mirror to Codeberg / codeberg (push) Waiting to run
update
2026-04-03 13:17:23 +02:00

68 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"