[fix] simple/double quotes into source

This commit is contained in:
ljf 2021-08-30 19:41:07 +02:00
parent 8d9f8c7123
commit 969564eec6

View file

@ -75,22 +75,21 @@ ynh_value_set() {
# Manage arguments with getopts # Manage arguments with getopts
ynh_handle_getopts_args "$@" ynh_handle_getopts_args "$@"
local var_part='^[ \t]*\$?(\w*\[)?[ \t]*["'"']?${key}['"'"]?[ \t]*\]?[ \t]*[:=]>?[ \t]*' local var_part='[ \t]*\$?(\w*\[)?[ \t]*["'"']?${key}['"'"]?[ \t]*\]?[ \t]*[:=]>?[ \t]*'
local crazy_value="$(grep -i -o -P "${var_part}\K.*(?=[ \t,\n;]*\$)" ${file} | head -n1)" local crazy_value="$(grep -i -o -P "^${var_part}\K.*(?=[ \t,\n;]*\$)" ${file} | head -n1)"
local var_part="^[ \t]*(\$?\w*\[)?[ \t]*[\"']?${key}[\"']?[ \t]*\]?[ \t]*[:=]>?[ \t]*"
local first_char="${crazy_value:0:1}" local first_char="${crazy_value:0:1}"
if [[ "$first_char" == '"' ]] ; then if [[ "$first_char" == '"' ]] ; then
value="$(echo "$value" | sed 's/"/\\"/g')" value="$(echo "$value" | sed 's/"/\"/g')"
sed -ri "s%(${var_part}\")[^\"]*(\"[ \t\n,;]*)\$%\1${value}\2%i" ${file} sed -ri 's%^('"${var_part}"'")[^"]*("[ \t;,]*)$%\1'"${value}"'\3%i' ${file}
elif [[ "$first_char" == "'" ]] ; then elif [[ "$first_char" == "'" ]] ; then
value="$(echo "$value" | sed "s/'/\\\\'/g")" value="$(echo "$value" | sed "s/'/"'\'"'/g")"
sed -ri "s%(${var_part}')[^']*('[ \t\n,;]*)\$%\1${value}\2%i" ${file} sed -ri "s%^(${var_part}')[^']*('"'[ \t,;]*)$%\1'"${value}"'\3%i' ${file}
else else
if [[ "$value" == *"'"* ]] || [[ "$value" == *'"'* ]] ; then if [[ "$value" == *"'"* ]] || [[ "$value" == *'"'* ]] ; then
value="\"$(echo "$value" | sed 's/"/\\"/g')\"" value='\"'"$(echo "$value" | sed 's/"/\"/g')"'\"'
fi fi
sed -ri "s%(${var_part}')[^']*('[ \t\n,;]*)\$%\1${value}\2%i" ${file} sed -ri "s%^(${var_part}).*"'$%\1'"${value}"'%i' ${file}
fi fi
} }
@ -222,7 +221,7 @@ _ynh_panel_show() {
ynh_return "${short_setting}:" ynh_return "${short_setting}:"
ynh_return "$(echo "${old[$short_setting]}" | sed 's/^/ /g')" ynh_return "$(echo "${old[$short_setting]}" | sed 's/^/ /g')"
else else
ynh_return "${short_setting}: \"$(echo "${old[$short_setting]}" | sed ':a;N;$!ba;s/\n/\n\n/g')\"" ynh_return "${short_setting}: "'"'"$(echo "${old[$short_setting]}" | sed 's/"/\\"/g' | sed ':a;N;$!ba;s/\n/\n\n/g')"'"'
fi fi
fi fi