|
|
|
@ -158,82 +158,45 @@ variable_value()
|
|
|
|
|
|
|
|
|
|
# оставить только названия параметров + "="
|
|
|
|
|
options_name() {
|
|
|
|
|
sed -r 's/^(.*=)(.*)$/\1/'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# преобразовать список строк в параметры для grep
|
|
|
|
|
grep_patterns() {
|
|
|
|
|
awk '{print "-e "$1}'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# исключить из вывода переданные шаблоны
|
|
|
|
|
exclude_options() {
|
|
|
|
|
if [[ -n $1 ]]
|
|
|
|
|
then
|
|
|
|
|
grep -v $*
|
|
|
|
|
else
|
|
|
|
|
cat
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# сохранить в выводе переданные шаблоны
|
|
|
|
|
keep_options() {
|
|
|
|
|
if [[ -n $1 ]]
|
|
|
|
|
then
|
|
|
|
|
grep $*
|
|
|
|
|
else
|
|
|
|
|
cat
|
|
|
|
|
fi
|
|
|
|
|
sed -r 's/^# (CON.*) is not set.*$/\1=/' | sed -r 's/^(CON.*=).*/\1/'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# преобразовать опции в синтаксис удаления параметра
|
|
|
|
|
remove_syntax() {
|
|
|
|
|
sed -r 's/^(.*=.*)$/!\1/'
|
|
|
|
|
sed -r 's/^(.*=).*$/!\1/'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# удалить выключенные параметры
|
|
|
|
|
discard_option_n() {
|
|
|
|
|
grep -v "=n$"
|
|
|
|
|
# преобразовать CONFIG_XXX=n -> # CONFIG_XXX is not set
|
|
|
|
|
n2not_set() {
|
|
|
|
|
sed -r 's/(CONFIG.*)=n/# \1 is not set/'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# оставить только выключенные параметры
|
|
|
|
|
keep_option_n() {
|
|
|
|
|
grep "=n$"
|
|
|
|
|
# получить разницу в конфигурационных файлах
|
|
|
|
|
diff_config() {
|
|
|
|
|
diff -u <(grep CONFIG_ $1 | sort | n2not_set) <(grep CONFIG_ $2 | sort | n2not_set)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# преобразовать # CONFIG_XXX is not set -> CONFIG_XXX=n
|
|
|
|
|
not_set2n() {
|
|
|
|
|
sed -r 's/# (CONFIG.*) is not set/\1=n/'
|
|
|
|
|
# получить разницу в параметрах конфигурационных файлов
|
|
|
|
|
diff_config_options() {
|
|
|
|
|
diff -u <(cat $1 | options_name | sort) <(cat $2 | options_name | sort)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# получить изменённые и новые параметры с новыми значениями
|
|
|
|
|
# изменённые параметры
|
|
|
|
|
append_options() {
|
|
|
|
|
diff -u $1 $2 | grep "^+[C#]" | sed 's/^.//' | not_set2n
|
|
|
|
|
diff_config $1 $2 | grep -e "^+CON" -e "^+# CON" | sed 's/^.//' | sort
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# получить изменённые и удалённые параметры со старыми значениями
|
|
|
|
|
|
|
|
|
|
# удаленные параметры
|
|
|
|
|
removed_options() {
|
|
|
|
|
diff -u $1 $2 | grep "^-[C#]" | sed 's/^.//' | not_set2n
|
|
|
|
|
diff_config_options $1 $2 | grep -e "^-CON" | sed 's/^.//' | sort
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# получить содержимое шаблона
|
|
|
|
|
diff_template_body() {
|
|
|
|
|
local orig_file=$1
|
|
|
|
|
local new_file=$2
|
|
|
|
|
# получаем список опций, которые стали выключенными в новом конфиге
|
|
|
|
|
local keep_opts=( $(append_options $orig_file $new_file | keep_option_n | options_name | grep_patterns) )
|
|
|
|
|
# получаем список опций, которые не изменились по значению, но возможно изменились по расположению в файле
|
|
|
|
|
local exclude_opts=( $(append_options $orig_file $new_file | grep_patterns) )
|
|
|
|
|
# сохраняем в шаблоне старые значения опций, которые изменились с пометкой на удаление
|
|
|
|
|
removed_options $orig_file $new_file | exclude_options ${exclude_opts[*]} | keep_options ${keep_opts[*]} | remove_syntax | sort || true
|
|
|
|
|
# получаем список опций, которые изменились
|
|
|
|
|
local exclude_opts=( $(removed_options $orig_file $new_file | options_name | grep_patterns) )
|
|
|
|
|
# сохраняем список опций, которые стали выключенные, но в отсутствовали в старом конфиге (оставляем только новые опции)
|
|
|
|
|
append_options $orig_file $new_file | exclude_options ${exclude_opts[*]} | keep_option_n | remove_syntax | sort || true
|
|
|
|
|
# получаем список опций, которые не изменились по значению, но возможно изменились по расположению в файле
|
|
|
|
|
local exclude_opts=( $(removed_options $orig_file $new_file | grep_patterns) )
|
|
|
|
|
# сохраняем список опций которые изменились и стали либо y либо m
|
|
|
|
|
append_options $orig_file $new_file | exclude_options ${exclude_opts[*]} | discard_option_n | sort || true
|
|
|
|
|
append_options $1 $2
|
|
|
|
|
removed_options $1 $2 | remove_syntax
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# вывести заголов для шаблона
|
|
|
|
|