This commit is contained in:
parent
2d6cd827c5
commit
76c876f644
|
|
@ -1,60 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# Usage: scripts/build-frontmatter.sh conf/metadata.yaml templates/frontmatter.html conf/frontmatter.html
|
|
||||||
# Description:
|
|
||||||
# Reads templates/frontmatter.html or templates/frontmatter.tex
|
|
||||||
# Replaces all $key$ with values from metadata.yaml
|
|
||||||
# Writes result to conf/frontmatter.html or frontmatter.tex
|
|
||||||
# Requirements:
|
|
||||||
# metadata.yaml must be flat (key: value)
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
META_FILE="$1"
|
|
||||||
TEMPLATE_FILE="$2"
|
|
||||||
OUTPUT_FILE="$3"
|
|
||||||
TEMP_FILE="scripts/tmp/frontmatter.tmp"
|
|
||||||
|
|
||||||
# Check arguments
|
|
||||||
echo " META_FILE: $META_FILE"
|
|
||||||
echo " TEMPLATE_FILE: $TEMPLATE_FILE"
|
|
||||||
echo " OUTPUT_FILE: $OUTPUT_FILE"
|
|
||||||
echo " TEMP_FILE: $TEMP_FILE"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Start fresh output
|
|
||||||
cp "$TEMPLATE_FILE" "$OUTPUT_FILE"
|
|
||||||
|
|
||||||
# Load metadata into Bash associative array
|
|
||||||
declare -A META
|
|
||||||
while IFS= read -r line; do
|
|
||||||
# skip empty or comment lines
|
|
||||||
[[ -z "$line" || "$line" =~ ^# ]] && continue
|
|
||||||
|
|
||||||
key=$(echo "$line" | cut -d ':' -f 1 | xargs)
|
|
||||||
val=$(echo "$line" | cut -d ':' -f 2- | xargs) # capture full value after first colon, trim spaces
|
|
||||||
|
|
||||||
# strip surrounding quotes if present
|
|
||||||
val="${val%\"}"
|
|
||||||
val="${val#\"}"
|
|
||||||
|
|
||||||
META["$key"]="$val"
|
|
||||||
done < "$META_FILE"
|
|
||||||
|
|
||||||
# Read template line by line and substitute
|
|
||||||
for key in "${!META[@]}"; do
|
|
||||||
# Strip leading/trailing whitespace and quotes
|
|
||||||
val="${META[$key]}"
|
|
||||||
val="${val%\"}" # remove trailing "
|
|
||||||
val="${val#\"}" # remove leading "
|
|
||||||
val="$(echo "$val" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')" # trim spaces safely
|
|
||||||
|
|
||||||
# Escape special chars for sed
|
|
||||||
esc_val=$(printf '%s' "$val" | sed -e 's/[\/&$]/\\&/g')
|
|
||||||
|
|
||||||
search_key="\$${key}\$"
|
|
||||||
echo " Replacing ${search_key} → ${val}"
|
|
||||||
sed -i "s|\\\$${key}\\\$|${val}|g" "$OUTPUT_FILE"
|
|
||||||
# ls -l "$OUTPUT_FILE"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "✅ Rendered: $OUTPUT_FILE"
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
REQ_PKGS=(
|
|
||||||
make
|
|
||||||
pandoc
|
|
||||||
texlive
|
|
||||||
texlive-xetex
|
|
||||||
texlive-latex-extra
|
|
||||||
texlive-fonts-recommended
|
|
||||||
texlive-fonts-extra
|
|
||||||
lmodern
|
|
||||||
epubcheck
|
|
||||||
)
|
|
||||||
|
|
||||||
echo "==> Checking and installing build dependencies"
|
|
||||||
|
|
||||||
install_pkg() {
|
|
||||||
PKG="$1"
|
|
||||||
if dpkg -s "$PKG" >/dev/null 2>&1; then
|
|
||||||
echo " ✅ $PKG already installed"
|
|
||||||
else
|
|
||||||
echo " ➕ Installing $PKG"
|
|
||||||
sudo apt-get install -y "$PKG"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "==> Updating package index"
|
|
||||||
sudo apt-get update -y
|
|
||||||
|
|
||||||
for PKG in "${REQ_PKGS[@]}"; do
|
|
||||||
install_pkg "$PKG"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "==> Verifying MathJax directory..."
|
|
||||||
if [ -d "lib/mathjax" ]; then
|
|
||||||
echo " ✅ MathJax directory exists"
|
|
||||||
else
|
|
||||||
echo " ❌ MathJax directory missing!"
|
|
||||||
echo " Please restore lib/mathjax/ or re-clone repo"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🎉 Build environment ready."
|
|
||||||
echo "Try building with:"
|
|
||||||
echo " make pdf"
|
|
||||||
echo " make html"
|
|
||||||
echo " make epub"
|
|
||||||
echo ""
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Usage: scripts/new-project.sh <project-directory>
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
# Check arguments
|
# Check arguments
|
||||||
|
|
@ -8,16 +7,15 @@ if [ "$#" -ne 1 ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Gets Script Directory
|
# Resolve directories
|
||||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||||
B3_DIR=$( cd -- "$( dirname -- "$SCRIPT_DIR/.." )" &> /dev/null && pwd )
|
B3_DIR="$( cd -- "$SCRIPT_DIR/.." >/dev/null 2>&1 && pwd )"
|
||||||
|
|
||||||
# Create project directory
|
|
||||||
PROJECT_DIR="$1"
|
PROJECT_DIR="$1"
|
||||||
mkdir -p "$PROJECT_DIR"
|
mkdir -p "$PROJECT_DIR"
|
||||||
|
|
||||||
echo "$SCRIPT_DIR"
|
echo "Script dir: $SCRIPT_DIR"
|
||||||
echo "$B3_DIR"
|
echo "Template root: $B3_DIR"
|
||||||
|
|
||||||
# Copy B3 template to project directory
|
# Copy template (excluding .git)
|
||||||
#rsync -av --exclude ".git" "$B3_DIR/" "$PROJECT_DIR"
|
# rsync -av --exclude ".git" "$B3_DIR/" "$PROJECT_DIR"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue