Files
omarchy/bin/omarchy-theme-render
David Heinemeier Hansson 6952e80710 Slim down
2026-01-01 11:49:08 -07:00

40 lines
1.2 KiB
Bash
Executable File

#!/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 <colors_toml> <templates_dir> <output_dir>"
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"