Created
October 10, 2019 10:59
-
-
Save armandomiani/e376cfdb6eb900160c88350ef77db830 to your computer and use it in GitHub Desktop.
# Responsible for updating a supervisor configuration
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Responsible for updating a supervisor configuration | |
# Usage: update_supervisor_config [service] [config] [new_value] | |
function update_supervisor_config() { | |
local INPUT_FILE="${SUPERVISOR_CONFIG}" | |
local SERVICE=$1 | |
local CONFIG=$2 | |
local NEW_VALUE=$3 | |
local TMP_FILE="/tmp/supervisor.conf" | |
local SERVICE_MATCHED=0 | |
local LINE | |
local CURRENT_VALUE | |
# Removes temp file, if is exists | |
if [[ -f "${TMP_FILE}" ]]; then | |
rm -f "${TMP_FILE}" | |
fi | |
# Iterate over the files' lines | |
while IFS= read -r LINE | |
do | |
# Check if its the selected service | |
if [[ "${LINE}" =~ ^\[program\:$SERVICE\]$ ]]; then | |
SERVICE_MATCHED=1 | |
elif [[ "${LINE}" =~ ^\[program\:.*\]$ ]]; then | |
SERVICE_MATCHED=0 | |
fi | |
# Check if its the selected config | |
if [[ ${SERVICE_MATCHED} -eq 1 && ${LINE} =~ ^${CONFIG}=(.*)$ ]]; then | |
# Gets the current value | |
CURRENT_VALUE="${BASH_REMATCH[1]}" | |
# Replace by the new one | |
LINE=$(echo ${LINE} | sed "s/${CONFIG}=${CURRENT_VALUE}/${CONFIG}=${NEW_VALUE}/") | |
fi | |
echo ${LINE} >> ${TMP_FILE} | |
done < "${INPUT_FILE}" | |
# Overwrite input file and removes the temp one. | |
cp "${TMP_FILE}" "${INPUT_FILE}" | |
rm -f "${TMP_FILE}" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment