#!/bin/zsh desired_build_file=${1:-all} desired_format=${2:-pdf} built_in_all="all" build_base_command() { local command_builder="" local file_name=$1 local file_type=$2 local file_path="$PWD/src/$file_name.chordpro" local revision="" local xc="roman" local x_vars=$(sed -n "s/^{\(x_.\+:.\+\)}.*/\1/p" $file_path | sed "s/:/=/") command_builder+=" chordpro" command_builder+=" --transcode=$xc" command_builder+=" --config=$PWD/config.json" if [[ -f "$PWD/configs/$file_name.json" ]] ; then command_builder+=" --config=$PWD/configs/$file_name.json" fi if [ -z "" ]; then while IFS= read -r line; do if [[ "$line" == "x_revision"* ]]; then revision=$(echo $line | cut -d'=' -f2) fi command_builder+=" --meta $line" done <<< "$x_vars" fi command_builder+=" -o $PWD/out/$file_name.v$revision.$xc.$file_type" command_builder+=" $file_path" echo "" echo "Starting $file_name" echo "" echo $command_builder echo "" eval ${command_builder} } render_all() { for file in $PWD/src/**/*(.); do build_base_command $file:t:r $desired_format:l &; done } echo "Interpreted as request to build '${desired_build_file:l}' as '${desired_format:l}'" if [[ $desired_build_file:l == $built_in_all:l ]] ; then render_all else build_base_command $desired_build_file:l $desired_format:l fi