AtOM/lib/setup/destinations
2026-03-13 17:52:26 +01:00

94 lines
2.2 KiB
Bash

#!/bin/bash
# Copyright © 2012-2026 ScriptFanix
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# A copy of the GNU General Public License v3 is includded in the LICENSE file
# at the root of the project.
setupDestinations() {
cat <<-EODesc
[Destinations]
Finally, we'll setup your destination(s).
EODesc
if (( ${#destinations[@]} ))
then
cat <<-EODesc
[Existing destinations]
We will review your currently configured destinations. Clear the 'Name'
field to remove one.
EODesc
for destination in "${destinations[@]}"
do
cat <<-EODesc
Name (string):
A simple name for this destination. Clear to remove this destination.
EODesc
expr='^[A-z0-9]*$'
comeagain() {
read -p'Name: ' -e -i"$destination" value
if [ -z "$value" ]
then
read \
-p"Really remove destination $destination? [y/N]"
if [[ $REPLY == y ]]
then
removeDestination "$destination"
continue
else
value="$destination"
fi
elif ! [[ $value =~ $expr ]]
then
echo "Invalid name $value." \
'Please use only' \
'alphanumeric characters.' >&2
comeagain
fi
}
comeagain
destination="$value"
setupDestination
done
fi
cat <<-EODesc
[New destinations]
This section will loop until you enter an empty 'Name'.
EODesc
for (( i=0 ; 1 ; i++ ))
do
cat <<-EODesc
Name (string):
A simple name for this destination. Empty string to end this
configuration loop.
EODesc
expr='^[A-z0-9]*$'
comeagain() {
read -p'Name: ' value
[ -z "$value" ] && return 1
if ! [[ $value =~ $expr ]]
then
echo "Invalid name $value. Please use" \
'only alphanumeric characters.' >&2
comeagain
fi
}
comeagain || break
destination="$value"
setupDestination
done
}