aboutsummaryrefslogtreecommitdiff
path: root/buildroot/bin/opt_set
diff options
context:
space:
mode:
Diffstat (limited to 'buildroot/bin/opt_set')
-rw-r--r--buildroot/bin/opt_set12
1 files changed, 12 insertions, 0 deletions
diff --git a/buildroot/bin/opt_set b/buildroot/bin/opt_set
new file mode 100644
index 0000000..a646e09
--- /dev/null
+++ b/buildroot/bin/opt_set
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+# exit on first failure
+set -e
+
+SED=$(which gsed || which sed)
+
+# Logic for returning nonzero based on answer here: https://stackoverflow.com/a/15966279/104648
+eval "${SED} -i '/\(\/\/\)*\([[:blank:]]*\)\(#define\s\+\b${1}\b\).*$/{s//\2\3 ${2}/;h};\${x;/./{x;q0};x;q9}' Marlin/Configuration.h" ||
+eval "${SED} -i '/\(\/\/\)*\([[:blank:]]*\)\(#define\s\+\b${1}\b\).*$/{s//\2\3 ${2}/;h};\${x;/./{x;q0};x;q9}' Marlin/Configuration_adv.h" ||
+eval "echo '#define ${@}' >>Marlin/Configuration_adv.h" ||
+(echo "ERROR: opt_set Can't set or add ${1}" >&2 && exit 9)