53 lines
1.6 KiB
Bash
53 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
# Sync Obsidian content to Astro blog
|
|
# This script copies content from Obsidian vault to the blog's content directories
|
|
# while preserving the structure and automatically handling images
|
|
|
|
set -e
|
|
|
|
# Configuration
|
|
OBSIDIAN_PATH="/mnt/synology/obsidian/Public/Blog"
|
|
BLOG_PATH="$(pwd)"
|
|
CONTENT_PATH="$BLOG_PATH/src/content"
|
|
IMAGES_SOURCE="$OBSIDIAN_PATH/images"
|
|
IMAGES_DEST="$BLOG_PATH/public/blog/images"
|
|
|
|
echo "🔄 Syncing Obsidian content to blog..."
|
|
|
|
# Ensure destination directories exist
|
|
mkdir -p "$CONTENT_PATH/blog"
|
|
mkdir -p "$IMAGES_DEST/posts"
|
|
mkdir -p "$IMAGES_DEST/placeholders"
|
|
|
|
# Sync all markdown files from Obsidian to blog content
|
|
echo "📝 Copying markdown files..."
|
|
find "$OBSIDIAN_PATH" -name "*.md" | while read file; do
|
|
# Get relative path
|
|
rel_path=$(realpath --relative-to="$OBSIDIAN_PATH" "$file")
|
|
dest_file="$CONTENT_PATH/blog/$rel_path"
|
|
|
|
# Create destination directory if it doesn't exist
|
|
mkdir -p "$(dirname "$dest_file")"
|
|
|
|
# Copy file with image path correction
|
|
sed 's|!\[\(.*\)\](\(.*\))||g' "$file" > "$dest_file"
|
|
|
|
echo " ✅ Copied: $rel_path"
|
|
done
|
|
|
|
# Sync images
|
|
echo "🖼️ Copying images..."
|
|
if [ -d "$IMAGES_SOURCE" ]; then
|
|
rsync -av --delete "$IMAGES_SOURCE/" "$IMAGES_DEST/posts/"
|
|
echo " ✅ Images synced"
|
|
else
|
|
echo " ⚠️ Warning: Image source directory not found"
|
|
fi
|
|
|
|
# Fix permissions
|
|
chmod -R 755 "$CONTENT_PATH/blog"
|
|
chmod -R 755 "$IMAGES_DEST"
|
|
|
|
echo "🚀 Sync completed successfully!"
|
|
echo "✨ You can now run 'npm run dev' to view your blog" |