#!/usr/bin/env bash # exit on first failure set -e # Get SED_CMD, SED_I, and the BSDSED flag . $(dirname $0)/opt_sed while [[ $# > 1 ]]; do DID=0 for FN in Marlin/Configuration.h Marlin/Configuration_adv.h; do if [[ $BSDSED ]]; then # BSD sed version (macOS) $SED_CMD "${SED_I[@]}" \ "/^[[:space:]]*\/\{0,2\}[[:space:]]*#define[[:space:]]+${1}\b/{ s/^[[:space:]]*\/\{0,2\}[[:space:]]*\(#define[[:space:]]+${1}\b\)[[:space:]]*.*/\1 ${2} \/\/ &/ h \$b end } \$!b :end x /./{ x; q0; } x q1" \ $FN && DID=1 else # GNU sed version $SED_CMD "${SED_I[@]}" \ "/^\(\s*\)\/\{0,2\}\s*\(#define\s\+${1}\b\)\s*\(.*\)$/{s//\1\2 ${2} \/\/ \3/;h};\${x;/./{x;q0};x;q1}" \ $FN && DID=1 fi done ((DID)) || eval "echo '#define ${1} ${2}' >>Marlin/Configuration.h" || (echo "ERROR: opt_set Can't set or add ${1}" >&2 && exit 9) shift 2 done