now revewApplyChanges accepts a default option...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2024-10-21 21:52:00 +03:00
parent 39b42883fc
commit f3d3b3fe32
3 changed files with 61 additions and 27 deletions

View File

@ -302,33 +302,81 @@ xreadpass(){
} }
# Like cat but a prettier...
#
# listFile PATH
#
listFile(){
if [ -e "$1" ] ; then
echo "--- $1 ---"
cat "$1"
echo '---'
else
echo "$FUNCNAME: $1: No such file or directory."
return 1
fi
}
# Review changes in PATH.new, then edit/apply changes to PATH # Review changes in PATH.new, then edit/apply changes to PATH
# #
# reviewApplyChanges PATH # reviewApplyChanges PATH [apply|edit|skip]
#
# #
# NOTE: if changes are not applied this will return non-zero making this # NOTE: if changes are not applied this will return non-zero making this
# usable in conditionals... # usable in conditionals...
reviewApplyChanges(){ reviewApplyChanges(){
local file=$1 local file=$1
if ! [ -e "$file".new ] ; then
echo "$FUNCNAME: $1: No such file or directory."
return 1
fi
# default option...
local dfl=
local a=a
local e=e
local s=s
case "${2,,}" in
a|apply)
a=A
dfl=a
;;
e|edit)
e=E
dfl=e
;;
s|skip)
s=S
dfl=s
;;
esac
echo "# Review updated: ${file}.new:" echo "# Review updated: ${file}.new:"
@ cat ${file}.new listFile ${file}.new
echo '---'
local res local res
while true ; do while true ; do
read -ep "# [a]pply, [e]dit, [s]kip? " res read -ep "# [$a]pply, [$e]dit, [$s]kip? " res
if [ -z $res ] ; then
if [ -z $dfl ] ; then
continue
fi
res=$dfl
fi
case "${res,,}" in case "${res,,}" in
a|apply) a|apply)
break break
;; ;;
e|edit) e|edit)
${EDITOR} "${file}.new" ${EDITOR} "${file}.new"
listFile ${file}.new
;; ;;
s|skip) s|skip)
echo "# file saved as: ${file}.new" echo "# Changes kept as: ${file}.new"
return 1 return 1
;; ;;
*) *)
echo "ERROR: unknown command: \"$res\"" >&2 echo "ERROR: Unknown command: \"$res\"" >&2
continue continue
;; ;;
esac esac

View File

@ -95,26 +95,12 @@ bootstrap-clean: host-bootstrap-clean
# Finalize: reconect admin port/bridge correctly... # Finalize: reconect admin port/bridge correctly...
.PHONY: finalize .PHONY: finalize
finalize: gate-bootstrap-clean finalize: gate-bootstrap-clean
# cleanup: stage 1...
make host-bootstrap-clean make host-bootstrap-clean
# cleanup: stage 2...
make host-bootstrap-clean make host-bootstrap-clean
#.PHONY: finalize
#finalize:
# ###
# ### This will break the connection to the server, to continue:
# ### - Detach the ADMIN port,
# ### - Connect the WAN port,
# ### - $ ssh <user>@<WAN_SSH_IP>
# ### from there:
# ### $ ssh root@pve
# ### then:
# ### # tmux a
# ### - When done this will reboot the system.
# ###
# tmux new-session 'make _finalize'
#---------------------------------------------------------------------- #----------------------------------------------------------------------
# Shorthands... # Shorthands...

View File

@ -54,7 +54,7 @@ if ! [ -z $BOOTSTRAP_CLEAN ] ; then
@ cp "$INTERFACES"{,.bak} @ cp "$INTERFACES"{,.bak}
__finalize(){ __finalize(){
if reviewApplyChanges "$INTERFACES" ; then if reviewApplyChanges "$INTERFACES" apply ; then
# XXX this must be done in nohup to avoid breaking on connection lost... # XXX this must be done in nohup to avoid breaking on connection lost...
if ! @ ifreload -a ; then if ! @ ifreload -a ; then
# reset settings back if ifreload fails... # reset settings back if ifreload fails...
@ -213,7 +213,7 @@ if xreadYes "# Create bridges?" BRIDGES ; then
fi fi
# interfaces # interfaces
if reviewApplyChanges "$INTERFACES" ; then if reviewApplyChanges "$INTERFACES" apply ; then
# XXX this must be done in nohup to avoid breaking on connection lost... # XXX this must be done in nohup to avoid breaking on connection lost...
if ! @ ifreload -a ; then if ! @ ifreload -a ; then
# reset settings back if ifreload fails... # reset settings back if ifreload fails...
@ -231,7 +231,7 @@ if xreadYes "# Update /etc/hosts?" HOSTS ; then
@ sed -i \ @ sed -i \
-e 's/^[^#].* \(pve.local.*\)$/'${HOST_ADMIN_IP/\/*}' \1/' \ -e 's/^[^#].* \(pve.local.*\)$/'${HOST_ADMIN_IP/\/*}' \1/' \
/etc/hosts.new /etc/hosts.new
reviewApplyChanges /etc/hosts reviewApplyChanges /etc/hosts apply
fi fi
@ -250,7 +250,7 @@ if xreadYes "# Update DNS?" DNS ; then
build build
file=/etc/resolv.conf file=/etc/resolv.conf
@ cp "staging/${file}" "${file}".new @ cp "staging/${file}" "${file}".new
reviewApplyChanges "${file}" reviewApplyChanges "${file}" apply
fi fi
@ -259,7 +259,7 @@ if xreadYes "# Update firewall rules?" FIREWALL ; then
build build
file=/etc/pve/firewall/cluster.fw file=/etc/pve/firewall/cluster.fw
@ cp "staging/${file}" "${file}".new @ cp "staging/${file}" "${file}".new
reviewApplyChanges "${file}" reviewApplyChanges "${file}" apply
fi fi