soapdish/scripts/system/system-config_delete

98 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# SYSTEM: CONFIG Delete
# If profiles exist
if (( ${#CONFIG_PROFILES_ARRAY[@]} ));
then
# Read input
read -p "Name of profile to Delete? (spaces allowable): " CONFIG_PROFILE_TO_DELETE
# Input validate (check if empty)
if [[ -z "$CONFIG_PROFILE_TO_DELETE" ]]
then
error_message "[d] Config (delete): Input blank. No file identied for deletion deleted."
echo -e ""
# Input validate (check for alphanum & "-_ ")
elif [[ "$CONFIG_PROFILE_TO_DELETE" =~ [^a-zA-Z0-9_-] ]]
then
error_message "[n] Config (delete): Filenames are alphanum only (spaces OK). Try again."
echo -e ""
# Proceed with profile deletion
else
# Check if name exists, and if so mark flag
PROFILE_EXISTS_FLAG="false"
for FILE_TO_DELETE_NAME in "${CONFIG_PROFILES_ARRAY[@]}"
do
if [[ "${FILE_TO_DELETE_NAME}" == ${CONFIG_PROFILE_TO_DELETE} ]]
then
PROFILE_EXISTS_FLAG="true"
fi
done
# Perform final action based on flag
if [[ $PROFILE_EXISTS_FLAG == "true" ]]
then
# Reference $CURRENTLY_ACTIVE_CONFIG_FILE to see if deleting is current in use
CURRENTLY_ACTIVE_CONFIG_FILE=$(<"$CONFIG_FILE_IDENTIFIER_PATH")
if [[ ${CONFIG_PROFILE_TO_DELETE} == "$CURRENTLY_ACTIVE_CONFIG_FILE" ]]
# If to delete is in use
then
# Delete file (move to trash)
TIMESTAMP=$(date +%Y-%m-%d--%H-%M-%S)
mv "$CONFIG_DIRECTORY/config-$CONFIG_PROFILE_TO_DELETE.json" "$CONFIG_DIRECTORY/trash/config-$CONFIG_PROFILE_TO_DELETE.json_(DELETED_${TIMESTAMP})"
# Delete config file identifier
truncate -s 0 "$CONFIG_FILE_IDENTIFIER_PATH"
# Confirmation / Alert
warning_message "[WARNING]: Config file no longer specified. Please specify one to stream."
confirmation_message "[d] Config (delete): Deletion of \"$CONFIG_PROFILE_TO_DELETE\" completed (file moved to trash)."
echo -e ""
# If to delete is not in use
else
TIMESTAMP=$(date +%Y-%m-%d--%H-%M-%S)
mv "$CONFIG_DIRECTORY/config-$CONFIG_PROFILE_TO_DELETE.json" "$CONFIG_DIRECTORY/trash/config-$CONFIG_PROFILE_TO_DELETE.json_(DELETED_${TIMESTAMP})"
confirmation_message "[d] Config (delete): Deletion of \"$CONFIG_PROFILE_TO_DELETE\" completed (file moved to trash)."
echo -e ""
fi
# Unset currently actie config file variable
unset CURRENTLY_ACTIVE_CONFIG_FILE
# If profile doesn't exist
else
error_message "[d] Config (delete): No Config named \"$CONFIG_PROFILE_TO_DELETE\" to delete."
echo -e ""
fi
# Unset Flag
unset PROFILE_EXISTS_FLAG
fi
# If no profiles exist
else
error_message "[d] Config (delete): No config profiles to delete. Create with \"new\"."
echo -e ""
fi