soapdish/scripts/system/system-config_rename

109 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# SYSTEM: CONFIG Rename
# If profiles exist
if (( ${#CONFIG_PROFILES_ARRAY[@]} ));
# Main Rename Routine
then
# Read input
read -p "Profile to Rename?: " PROFILE_TO_RENAME
# Input validate (check if empty)
if [[ -z "$PROFILE_TO_RENAME" ]]; then
error_message "[r] Config (rename): Input blank. No file identied for renaming."
echo -e ""
# Input validate (check for alphanum & "-_")
elif [[ "$PROFILE_TO_RENAME" =~ [^a-zA-Z0-9_-] ]]; then
error_message "[r] Config (rename): Filenames are alphanum only (no spaces). Try again."
echo -e ""
else
# Check if file exists
if [[ "${CONFIG_PROFILES_ARRAY[*]}" =~ ${PROFILE_TO_RENAME} ]]; then
# Read input
read -p "New name for file?: " PROFILE_NEW_NAME
# Input Validate (check if empty)
if [[ -z "$PROFILE_NEW_NAME" ]]; then
error_message "[r] Config (rename): New file name is blank."
echo -e ""
# Input validate (check for alphanum & "-_")
elif [[ "$PROFILE_NEW_NAME" =~ [^a-zA-Z0-9_-] ]]; then
error_message "[r] Config (rename): Filenames are alphanum only (no spaces). Try again."
echo -e ""
else
# Input validate (check for alphanum & "-_")
if [[ "${CONFIG_PROFILES_ARRAY[*]}" =~ ${PROFILE_NEW_NAME} ]]; then
error_message "[r] Config (rename): New name for file already exists."
echo -e ""
# Renaming routine
else
# Get name of current config
CURRENTLY_ACTIVE_CONFIG_FILE=$(<"$CONFIG_FILE_IDENTIFIER_PATH")
if [[ "$CURRENTLY_ACTIVE_CONFIG_FILE" == "$PROFILE_TO_RENAME" ]];
# If profile being renamed is the currently used profile
then
# Rename/mv file and change internal name
sudo mv "$CONFIG_DIRECTORY/config-$PROFILE_TO_RENAME.json" "$CONFIG_DIRECTORY/config-$PROFILE_NEW_NAME.json"
sed -i "s/\/\/ Config name.*/\/\/ Config name: $PROFILE_NEW_NAME/" "$CONFIG_DIRECTORY/config-$PROFILE_NEW_NAME.json"
# Delete config file identifier contents and push new name
truncate -s 0 "$CONFIG_FILE_IDENTIFIER_PATH"
echo "$PROFILE_NEW_NAME" >> $CONFIG_FILE_IDENTIFIER_PATH
# Confirm
confirmation_message "[r] Config (rename): Config file \"$PROFILE_TO_RENAME\" renamed to \"$PROFILE_NEW_NAME\"."
echo -e ""
# If profile being renamed is NOT the currently used profile
else
# Rename/mv file and change internal name
sudo mv "$CONFIG_DIRECTORY/config-$PROFILE_TO_RENAME.json" "$CONFIG_DIRECTORY/config-$PROFILE_NEW_NAME.json"
sed -i "s/\/\/ Config name.*/\/\/ Config name: $PROFILE_NEW_NAME/" "$CONFIG_DIRECTORY/config-$PROFILE_NEW_NAME.json"
# Confirm
confirmation_message "[r] Config (rename): Config file \"$PROFILE_TO_RENAME\" renamed to \"$PROFILE_NEW_NAME\"."
echo -e ""
fi
fi
fi
else
error_message "[r] Config (Rename): No file named \"$PROFILE_TO_RENAME\" to rename."
echo -e ""
fi
fi
# No profiles exist
else
error_message "[r] Config (rename): No config profiles to rename. Create with \"new\"."
echo -e ""
fi