diff --git a/scripts/patch_dsl.sh b/scripts/patch_dsl.sh new file mode 100755 index 00000000..7bf76447 --- /dev/null +++ b/scripts/patch_dsl.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +[[ $# -eq 1 ]] || [[ $# -eq 2 ]] || { + echo "Usage: $0 "; exit 1 +} + +function main +{ + local readfrom="$1" ; shift + local writeto="${readfrom}.patched" + local reverse='false' + + [[ -e $readfrom ]] || { + echo "Invalid file specified..."; exit 1 + } + + [[ $# -gt 0 ]] && [[ $1 == "reverse" ]] && { + reverse='true' + writeto="${readfrom}.reversed" + } + + if $reverse; then + sed -r ':SUBSTITUTE_COLON_IN_PARAM s/^([^=]+)[-]([^=]+)+(\s?=.*)/\1:\2\3/g ; t SUBSTITUTE_COLON_IN_PARAM' "$readfrom" |\ + sed -r ':SUBSTITUTE_COLON_IN_VALUE_1 s/(.*\s?=\s?)(.*)<([^ ]*)-([^ ]*)>/\1\2<\3:\4>/g ; t SUBSTITUTE_COLON_IN_VALUE_1' |\ + sed -r ':SUBSTITUTE_COLON_IN_VALUE_2 s/(.*\s?=\s?)(.*)\$\{([^ ]*)-([^ ]*)\}/\1\2\$\{\3:\4\}/g ; t SUBSTITUTE_COLON_IN_VALUE_2' |\ + sed -r 's/^(;\s?|#\s?)(vim)[-](ft=dosini)/\1\2:\3/' | tee "$writeto" >/dev/null + else + sed -r ':SUBSTITUTE_COLON_IN_PARAM s/^([^=]+)[:]([^=]+)+(\s?=.*)/\1-\2\3/g ; t SUBSTITUTE_COLON_IN_PARAM' "$readfrom" |\ + sed -r ':SUBSTITUTE_COLON_IN_VALUE_1 s/(.*\s?=\s?)(.*)<([^ ]*):([^ ]*)>/\1\2<\3-\4>/g ; t SUBSTITUTE_COLON_IN_VALUE_1' |\ + sed -r ':SUBSTITUTE_COLON_IN_VALUE_2 s/(.*\s?=\s?)(.*)\$\{([^ ]*):([^ ]*)\}/\1\2\$\{\3-\4\}/g ; t SUBSTITUTE_COLON_IN_VALUE_2' |\ + sed -r 's/^(;\s?|#\s?)(vim)[-](ft=dosini)/\1\2:\3/' | tee "$writeto" >/dev/null + fi + + ret=$? + + if [[ $ret -gt 1 ]]; then + echo -e "\033[31mFailed to patch config file... #$ret\033[0m"; exit $ret + else + echo -e "\033[32mConfig file was Successfully patched (Saved at: ${writeto})\033[0m"; exit 0 + fi +} + +main "$@"