#!/bin/bash # omarchy-theme-render # Renders templates using values from a TOML configuration file. COLORS_FILE="$1" TEMPLATES_DIR="$2" OUTPUT_DIR="$3" if [[ -z $COLORS_FILE || -z $TEMPLATES_DIR || -z $OUTPUT_DIR ]]; then echo "Usage: omarchy-theme-render " exit 1 fi # Old themes don't have color files [[ ! -f "$COLORS_FILE" ]] && exit 1 # Configs are rendered into the output directory mkdir -p "$OUTPUT_DIR" # Parse TOML using yq (treating it as YAML since the flat key=value structure is compatible) # We convert 'key = value' to 'key: value' to make it valid YAML, then use yq/jq to generate the replacement commands. SED_SCRIPT=$(mktemp) sed 's/=/:/' "$COLORS_FILE" | yq -r 'to_entries[] | "s|{{ \(.key) }}|\(.value)|g"' > "$SED_SCRIPT" # Process each template file # Enable nullglob to handle case where no templates exist shopt -s nullglob for tpl in "$TEMPLATES_DIR"/*.tpl; do filename=$(basename "$tpl" .tpl) output_path="$OUTPUT_DIR/$filename" # Don't overwrite configs already exists in the output directory (copied from theme specific folder) if [[ ! -f $output_path ]]; then sed -f "$SED_SCRIPT" "$tpl" > "$output_path" fi done rm "$SED_SCRIPT"