59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
# Configuration
|
|
BLOG_CONTENT_PATH="src/content"
|
|
ASSETS_PATH="public/assets"
|
|
BLOG_SOURCE="src/content/blog"
|
|
|
|
# Create necessary directories if they don't exist
|
|
mkdir -p "$BLOG_CONTENT_PATH/posts"
|
|
mkdir -p "$BLOG_CONTENT_PATH/configurations"
|
|
mkdir -p "$BLOG_CONTENT_PATH/projects"
|
|
mkdir -p "$ASSETS_PATH/images"
|
|
|
|
# Function to process markdown files
|
|
process_markdown() {
|
|
local file="$1"
|
|
local filename=$(basename "$file")
|
|
|
|
# Convert Obsidian wiki-links to markdown links
|
|
sed -i 's/\[\[/[/g; s/\]\]/]/g' "$file"
|
|
|
|
# Update image paths
|
|
sed -i 's/\(!\[.*\](\)attachments\//\1\/assets\/images\//g' "$file"
|
|
|
|
echo "Processed $filename"
|
|
}
|
|
|
|
# Function to categorize content
|
|
categorize_content() {
|
|
local file="$1"
|
|
local filename=$(basename "$file")
|
|
|
|
# Read the frontmatter to determine the category
|
|
if grep -q "category: configuration" "$file"; then
|
|
cp "$file" "$BLOG_CONTENT_PATH/configurations/"
|
|
process_markdown "$BLOG_CONTENT_PATH/configurations/$filename"
|
|
elif grep -q "category: project" "$file"; then
|
|
cp "$file" "$BLOG_CONTENT_PATH/projects/"
|
|
process_markdown "$BLOG_CONTENT_PATH/projects/$filename"
|
|
else
|
|
cp "$file" "$BLOG_CONTENT_PATH/posts/"
|
|
process_markdown "$BLOG_CONTENT_PATH/posts/$filename"
|
|
fi
|
|
}
|
|
|
|
# Process all markdown files in the blog directory
|
|
for file in "$BLOG_SOURCE"/*.md; do
|
|
if [ -f "$file" ]; then
|
|
categorize_content "$file"
|
|
fi
|
|
done
|
|
|
|
# Ensure images are in place
|
|
if [ -d "$BLOG_SOURCE/images" ]; then
|
|
cp -r "$BLOG_SOURCE/images/"* "$ASSETS_PATH/images/"
|
|
fi
|
|
|
|
echo "Content processing complete"
|