diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8cd6688 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +publish: + @./scripts/publish.sh diff --git a/scripts/publish.sh b/scripts/publish.sh new file mode 100755 index 0000000..1dbc54f --- /dev/null +++ b/scripts/publish.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Debugging: Print commands as they are executed +set -x + +# Define source and destination directories +SOURCE_DIR=~/obsidian +DEST_DIR=/home/ac1dburn/obsidian-site/content +IMAGE_DIR=$DEST_DIR/images + +# Ensure destination directories exist +mkdir -p "$DEST_DIR" +mkdir -p "$IMAGE_DIR" + +# Temporary log for copied files +LOG_FILE=/tmp/copied_files.log + +# Clear the log file +> "$LOG_FILE" + +# Find Markdown files with "publish: true" and process them +find -L "$SOURCE_DIR" -type f -name "*.md" -exec grep -q "publish: true" {} \; -exec grep -l "publish: true" {} + | while read -r markdown_file; do + # Extract relative path from the source directory + relative_path="${markdown_file#$SOURCE_DIR/}" + + # Destination path + dest_path="$DEST_DIR/$relative_path" + + # Copy the Markdown file + cp "$markdown_file" "$dest_path" + echo "Copied $markdown_file to $dest_path" >> "$LOG_FILE" + + # Extract and copy referenced images + grep -o '\!\[\[.*\]\]' "$markdown_file" | sed 's/\!\[\[\(.*\)\]\]/\1/' | while IFS= read -r image_ref; do + # Check if image_ref is a relative path + if [[ ! "$image_ref" =~ ^/ ]]; then + image_ref="$SOURCE_DIR/$image_ref" + fi + + # Try to find the image recursively within SOURCE_DIR + image_path=$(find -L "$SOURCE_DIR" -type f -name "$(basename "$image_ref")" -print -quit) + + # Debugging: Print image_path + echo "Checking image_path: $image_path" >> "$LOG_FILE" + + if [ -f "$image_path" ]; then + cp "$image_path" "$IMAGE_DIR/" + echo "Copied image $image_ref to $IMAGE_DIR/" >> "$LOG_FILE" + else + echo "Image reference $image_ref in $markdown_file does not exist." >> "$LOG_FILE" + fi + done +done + +# Print the log file +cat "$LOG_FILE" + +# Debugging: Indicate completion +echo "Script execution completed." diff --git a/scripts/publish_old.sh b/scripts/publish_old.sh new file mode 100755 index 0000000..9926ab3 --- /dev/null +++ b/scripts/publish_old.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# Debugging: Print commands as they are executed +set -x + +# Define source and destination directories +SOURCE_DIR=~/obsidian +DEST_DIR=/home/ac1dburn/obsidian-site/content + +# Check if source directory exists +if [ ! -d "$SOURCE_DIR" ]; then + echo "Source directory $SOURCE_DIR does not exist!" + exit 1 +fi + +# Check if destination directory exists, if not create it +if [ ! -d "$DEST_DIR" ]; then + mkdir -p "$DEST_DIR" +fi + +# Find markdown files where publish: true exists in the YAML front matter +find -L "$SOURCE_DIR" -type f -name "*.md" -exec grep -q "publish: true" {} \; -exec grep -l "publish: true" {} + | while read -r markdown_file; do + # Extract relative path from the source directory + relative_path="${markdown_file#$SOURCE_DIR/}" + + # Extract directory path + dir_path=$(dirname "$relative_path") + + # Create the corresponding directory structure in the destination directory + mkdir -p "$DEST_DIR/$dir_path" + + # Copy markdown file to the destination directory + cp "$markdown_file" "$DEST_DIR/$relative_path" + + # Debugging: Log the operations being performed + echo "Copied $markdown_file to $DEST_DIR/$relative_path" +done + +# Debugging: Indicate completion +echo "Script execution completed." diff --git a/scripts/publish_old_works.sh b/scripts/publish_old_works.sh new file mode 100755 index 0000000..841ac49 --- /dev/null +++ b/scripts/publish_old_works.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# Debugging: Print commands as they are executed +set -x + +# Define source and destination directories +SOURCE_DIR=~/obsidian +DEST_DIR=/home/ac1dburn/obsidian-site/content +IMAGE_DIR=$DEST_DIR/images + +# Ensure destination directories exist +mkdir -p "$DEST_DIR" +mkdir -p "$IMAGE_DIR" + +# Temporary log for copied files +LOG_FILE=/tmp/copied_files.log + +# Clear the log file +> "$LOG_FILE" + +# Find Markdown files with "publish: true" and process them +find -L "$SOURCE_DIR" -type f -name "*.md" -exec grep -q "publish: true" {} \; -exec grep -l "publish: true" {} + | while read -r markdown_file; do + # Extract relative path from the source directory + relative_path="${markdown_file#$SOURCE_DIR/}" + + # Destination path + dest_path="$DEST_DIR/$relative_path" + + # Copy the Markdown file + cp "$markdown_file" "$dest_path" + echo "Copied $markdown_file to $dest_path" >> "$LOG_FILE" + + # Extract and copy referenced images + grep -o '\!\[\[.*\]\]' "$markdown_file" | sed 's/\!\[\[\(.*\)\]\]/\1/' | while IFS= read -r image_ref; do + image_path="$SOURCE_DIR/$image_ref" + + # Debugging: Print image_path + echo "Checking image_path: $image_path" >> "$LOG_FILE" + + if [ -f "$image_path" ]; then + cp "$image_path" "$IMAGE_DIR/" + echo "Copied image $image_ref to $IMAGE_DIR/" >> "$LOG_FILE" + else + echo "Image reference $image_ref in $markdown_file does not exist." >> "$LOG_FILE" + fi + done +done + +# Print the log file +cat "$LOG_FILE" + +# Debugging: Indicate completion +echo "Script execution completed."