|
|
@ -0,0 +1,51 @@ |
|
|
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
# https://github.com/YunoHost/yunohost/pull/394 |
|
|
|
|
|
|
|
|
|
|
|
# Substitute/replace a string (or expression) by another in a file |
|
|
|
|
|
# |
|
|
|
|
|
# usage: ynh_replace_string match_string replace_string target_file |
|
|
|
|
|
# | arg: match_string - String to be searched and replaced in the file |
|
|
|
|
|
# | arg: replace_string - String that will replace matches |
|
|
|
|
|
# | arg: target_file - File in which the string will be replaced. |
|
|
|
|
|
# |
|
|
|
|
|
# As this helper is based on sed command, regular expressions and |
|
|
|
|
|
# references to sub-expressions can be used |
|
|
|
|
|
# (see sed manual page for more information) |
|
|
|
|
|
ynh_replace_string () { |
|
|
|
|
|
local delimit=@ |
|
|
|
|
|
local match_string=$1 |
|
|
|
|
|
local replace_string=$2 |
|
|
|
|
|
local workfile=$3 |
|
|
|
|
|
|
|
|
|
|
|
# Escape the delimiter if it's in the string. |
|
|
|
|
|
match_string=${match_string//${delimit}/"\\${delimit}"} |
|
|
|
|
|
replace_string=${replace_string//${delimit}/"\\${delimit}"} |
|
|
|
|
|
|
|
|
|
|
|
sudo sed --in-place "s${delimit}${match_string}${delimit}${replace_string}${delimit}g" "$workfile" |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# Substitute/replace a password by another in a file |
|
|
|
|
|
# |
|
|
|
|
|
# usage: ynh_replace_password_string match_string replace_string target_file |
|
|
|
|
|
# | arg: match_string - String to be searched and replaced in the file |
|
|
|
|
|
# | arg: replace_string - String that will replace matches |
|
|
|
|
|
# | arg: target_file - File in which the string will be replaced. |
|
|
|
|
|
# |
|
|
|
|
|
# This helper will use ynh_replace_string, but as you can use special |
|
|
|
|
|
# characters, you can't use some regular expressions and sub-expressions. |
|
|
|
|
|
ynh_replace_password_string () { |
|
|
|
|
|
local match_string=$1 |
|
|
|
|
|
local replace_string=$2 |
|
|
|
|
|
local workfile=$3 |
|
|
|
|
|
|
|
|
|
|
|
# Escape any backslash to preserve them as simple backslash. |
|
|
|
|
|
match_string=${match_string//\\/"\\\\"} |
|
|
|
|
|
replace_string=${replace_string//\\/"\\\\"} |
|
|
|
|
|
|
|
|
|
|
|
# Escape the & character, who has a special function in sed. |
|
|
|
|
|
match_string=${match_string//&/"\&"} |
|
|
|
|
|
replace_string=${replace_string//&/"\&"} |
|
|
|
|
|
|
|
|
|
|
|
ynh_replace_string "$match_string" "$replace_string" "$workfile" |
|
|
|
|
|
} |