From ad6a802106dbb5432d8f65e3803f658abda8c7c6 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Mon, 24 Nov 2014 15:28:32 -0500 Subject: kconfigpp: Substitute variables --- diff --git a/kconfigpp/kconfigpp.sh b/kconfigpp/kconfigpp.sh index 90b03f1..0518544 100644 --- a/kconfigpp/kconfigpp.sh +++ b/kconfigpp/kconfigpp.sh @@ -22,33 +22,62 @@ set -u main() { + local script= + local arg= + local var= + local val= + + if [ ${#} -lt 1 ]; then + usage >&2 + exit 1 + fi + + script='' + for arg in "${@}"; do + case "${arg}" in + *=*) + IFS='=' read var val <<-EOF + ${arg} + EOF + val="$(printf '%s' "${val}" | sed 's|/|\\/|g')" + script="${script}s/\$${var}/${val}/g;" + shift 1 + ;; + *) + break + esac + done + if [ ${#} -ne 1 ]; then usage >&2 exit 1 fi - parse "${1}" + parse "${1}" "${script}" } usage() { - printf 'Usage: %s \n' "${0}" + printf 'Usage: %s [= ...] \n' "${0}" } parse() { local file="${1}" + local script="${2}" local line= while IFS='' read line; do if [ "x${line}" != "x${line#source}" ]; then line="$(printf '%s' "${line}" | \ sed 's/^source[ \t][ \t]*"*\([^"]*\).*$/\1/')" - parse "${line}" + parse "${line}" "${script}" else printf '%s\n' "${line}" fi - done <"${file}" + done <<-EOF + $(sed "${script}" <"${file}") + EOF } main "${@}" -- cgit v0.9.1