mirror of
https://github.com/m8tin/cis.git
synced 2026-11-02 14:17:24 +01:00
Refactoring using "local -r"
This commit is contained in:
9 files changed
+97
-137
No files matched your search
@@ -27,10 +27,8 @@ function checkPermissions() {
|
||||
}
|
||||
|
||||
function cloneOrPull() {
|
||||
local _FOLDER _REPOSITORY
|
||||
_FOLDER="${1:?"Missing first parameter FOLDER"}"
|
||||
_REPOSITORY="${2:?"Missing second parameter REPOSITORY"}"
|
||||
readonly _FOLDER _REPOSITORY
|
||||
local -r _FOLDER="${1:?"Missing first parameter FOLDER"}"
|
||||
local -r _REPOSITORY="${2:?"Missing second parameter REPOSITORY"}"
|
||||
|
||||
[ -d "${_FOLDER}.git" ] \
|
||||
&& git -C "${_FOLDER}" pull &> /dev/null \
|
||||
@@ -47,11 +45,9 @@ function cloneOrPull() {
|
||||
}
|
||||
|
||||
function printRepository() {
|
||||
local _FOLDER _CONFIGURED_REPOSITORY _SUGGESTED_REPOSITORY
|
||||
_FOLDER="${1:?"Missing first parameter FOLDER"}"
|
||||
_CONFIGURED_REPOSITORY="$(git -C "${_FOLDER:?"Missing FOLDER"}" config --get remote.origin.url 2> /dev/null)"
|
||||
_SUGGESTED_REPOSITORY="${2}"
|
||||
readonly _FOLDER _CONFIGURED_REPOSITORY _SUGGESTED_REPOSITORY
|
||||
local -r _FOLDER="${1:?"Missing first parameter FOLDER"}"
|
||||
local -r _CONFIGURED_REPOSITORY="$(git -C "${_FOLDER:?"Missing FOLDER"}" config --get remote.origin.url 2> /dev/null)"
|
||||
local -r _SUGGESTED_REPOSITORY="${2}"
|
||||
|
||||
! [ -z "${_CONFIGURED_REPOSITORY}" ] \
|
||||
&& echo "${_CONFIGURED_REPOSITORY}" \
|
||||
@@ -74,11 +70,9 @@ function printRepository() {
|
||||
# Note that an unprivileged user can use this script successfully,
|
||||
# if no user has to be added to the host because it already exists.
|
||||
function addAndCheckGitRepository() {
|
||||
local _FOLDER _REPOSITORY _RIGHTS
|
||||
_FOLDER="${1:?"Missing first parameter FOLDER"}"
|
||||
_RIGHTS="${2:?"Missing second parameter RIGHTS: (readonly, writable) "}"
|
||||
_REPOSITORY="$(printRepository "${_FOLDER}" "${3}")"
|
||||
readonly _FOLDER _REPOSITORY _RIGHTS
|
||||
local -r _FOLDER="${1:?"Missing first parameter FOLDER"}"
|
||||
local -r _RIGHTS="${2:?"Missing second parameter RIGHTS: (readonly, writable) "}"
|
||||
local -r _REPOSITORY="$(printRepository "${_FOLDER}" "${3}")"
|
||||
|
||||
echo \
|
||||
&& cloneOrPull "${_FOLDER}" "${_REPOSITORY:?"Missing REPOSITORY: e.g. ssh://git@your.domain.com/cis.git"}" \
|
||||
|
||||
@@ -9,9 +9,7 @@ source /cis/core/base.module.sh
|
||||
# Note that an unprivileged user can use this script successfully,
|
||||
# if no user has to be added to the host because it already exists.
|
||||
function addNormalUser() {
|
||||
local _USER
|
||||
_USER="${1:?"Missing first parameter USER"}"
|
||||
readonly _USER
|
||||
local -r _USER="${1:?"Missing first parameter USER"}"
|
||||
|
||||
#The user already exists
|
||||
id -u "${_USER}" &> /dev/null \
|
||||
|
||||
@@ -9,10 +9,8 @@ source /cis/core/base.module.sh
|
||||
# Note that an unprivileged user can use this script successfully,
|
||||
# if no user has to be added to the host because it already exists.
|
||||
function addToCrontabEveryHour() {
|
||||
local _MINUTE_VALUE _STRING
|
||||
! [ -z "${2##*[!0-9]*}" ] && _MINUTE_VALUE=$((${2}%60)) # if second parameter is integer then (minute-value % 60) as safe guard
|
||||
_STRING="${_MINUTE_VALUE:?"Missing MINUTE_VALUE"} * * * * ${1:?"Missing first parameter COMMAND"} > /dev/null 2>&1"
|
||||
readonly _MINUTE_VALUE _STRING
|
||||
! [ -z "${2##*[!0-9]*}" ] && local -r _MINUTE_VALUE=$((${2}%60)) # if second parameter is integer then (minute-value % 60) as safe guard
|
||||
local -r _STRING="${_MINUTE_VALUE:?"Missing MINUTE_VALUE"} * * * * ${1:?"Missing first parameter COMMAND"} > /dev/null 2>&1"
|
||||
|
||||
[ "$(id -u)" == "0" ] \
|
||||
&& crontab -l | grep -qF "${_STRING:?"Missing CRON_STRING"}" \
|
||||
|
||||
+24
-28
@@ -396,51 +396,47 @@ function base.printWithColor() {
|
||||
}
|
||||
|
||||
function base.set() {
|
||||
local _CLEAN_VARNAME _MODE _REGEX _VALUE _VARNAME
|
||||
_VARNAME="${1:?"base.set(): Missing first parameter VARNAME"}"
|
||||
_CLEAN_VARNAME="${_VARNAME//[^a-zA-Z0-9_]/}"
|
||||
_VALUE="${2}"
|
||||
_REGEX="${3:?"base.set(): Missing third parameter REGEX"}"
|
||||
_MODE="${4}"
|
||||
readonly _CLEAN_VARNAME _MODE _REGEX _VALUE _VARNAME
|
||||
local -r _base_set_VARNAME="${1:?"base.set(): Missing first parameter VARNAME"}"
|
||||
local -r _base_set_CLEAN_VARNAME="${_base_set_VARNAME//[^a-zA-Z0-9_]/}"
|
||||
local -r _base_set_VALUE="${2}"
|
||||
local -r _base_set_REGEX="${3:?"base.set(): Missing third parameter REGEX"}"
|
||||
local -r _base_set_MODE="${4}"
|
||||
|
||||
[ "${_VARNAME}" != "${_CLEAN_VARNAME}" ] \
|
||||
&& echo "FAILURE - base.set(): Invalid name of variable: ${_VARNAME}" >&2 \
|
||||
[ "${_base_set_VARNAME}" != "${_base_set_CLEAN_VARNAME}" ] \
|
||||
&& echo "FAILURE - base.set(): Invalid name of variable: ${_base_set_VARNAME}" >&2 \
|
||||
&& exit 1
|
||||
|
||||
[ -z "${_VALUE}" ] \
|
||||
&& [ "${_MODE}" == 'optional' ] \
|
||||
&& readonly "${_CLEAN_VARNAME}" \
|
||||
[ -z "${_base_set_VALUE}" ] \
|
||||
&& [ "${_base_set_MODE}" == 'optional' ] \
|
||||
&& readonly "${_base_set_CLEAN_VARNAME}" \
|
||||
&& return 0
|
||||
|
||||
# Sets the value to a global variable with name $_VARNAME
|
||||
[[ "${_VALUE}" =~ ^(${_REGEX})$ ]] \
|
||||
&& printf -v "${_CLEAN_VARNAME}" -- "%s" "${_VALUE}" \
|
||||
&& readonly "${_CLEAN_VARNAME}" \
|
||||
# Sets the value to a global variable with name $_base_set_VARNAME
|
||||
[[ "${_base_set_VALUE}" =~ ^(${_base_set_REGEX})$ ]] \
|
||||
&& printf -v "${_base_set_CLEAN_VARNAME}" -- "%s" "${_base_set_VALUE}" \
|
||||
&& readonly "${_base_set_CLEAN_VARNAME}" \
|
||||
&& return 0
|
||||
|
||||
printf -- '%s\n' "FAILURE: - base.set(): Unable to set variable '${_VARNAME}' to value '${_VALUE}', validation failed: '${_REGEX}'" >&2
|
||||
printf -- '%s\n' "FAILURE: - base.set(): Unable to set variable '${_base_set_VARNAME}' to value '${_base_set_VALUE}', validation failed: '${_REGEX}'" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
function base.setFromFile() {
|
||||
local _CLEAN_VARNAME _FILENAME _VARNAME
|
||||
_VARNAME="${1:?"base.setFromFile(): Missing first parameter VARNAME"}"
|
||||
_CLEAN_VARNAME="${_VARNAME//[^a-zA-Z0-9_]/}"
|
||||
_FILENAME="${2:?"base.serFromFile(): Missing second parameter FILENAME"}"
|
||||
readonly _CLEAN_VARNAME _FILENAME _VARNAME
|
||||
local -r _base_setFromFile_VARNAME="${1:?"base.setFromFile(): Missing first parameter VARNAME"}"
|
||||
local -r _base_setFromFile_CLEAN_VARNAME="${_base_setFromFile_VARNAME//[^a-zA-Z0-9_]/}"
|
||||
local -r _base_setFromFile_FILENAME="${2:?"base.serFromFile(): Missing second parameter FILENAME"}"
|
||||
|
||||
[ "${_VARNAME}" != "${_CLEAN_VARNAME}" ] \
|
||||
&& echo "FAILURE - base.setFromFile(): Invalid name of variable: ${_VARNAME}" >&2 \
|
||||
[ "${_base_setFromFile_VARNAME}" != "${_base_setFromFile_CLEAN_VARNAME}" ] \
|
||||
&& echo "FAILURE - base.setFromFile(): Invalid name of variable: ${_base_setFromFile_VARNAME}" >&2 \
|
||||
&& exit 1
|
||||
|
||||
local _LINE=$(grep -m 1 -oE "^[[:blank:]]*${_CLEAN_VARNAME}=[^[:blank:]]+.*" "${_FILENAME}" 2> /dev/null) \
|
||||
local _LINE=$(grep -m 1 -oE "^[[:blank:]]*${_base_setFromFile_CLEAN_VARNAME}=[^[:blank:]]+.*" "${_base_setFromFile_FILENAME}" 2> /dev/null) \
|
||||
&& [ -n "${_LINE}" ] \
|
||||
&& printf -v "${_CLEAN_VARNAME}" -- "%s" "${_LINE#*=}" \
|
||||
&& readonly "${_CLEAN_VARNAME}" \
|
||||
&& printf -v "${_base_setFromFile_CLEAN_VARNAME}" -- "%s" "${_LINE#*=}" \
|
||||
&& readonly "${_base_setFromFile_CLEAN_VARNAME}" \
|
||||
&& return 0
|
||||
|
||||
printf -- '%s\n' "FAILURE: - base.setFromFile(): Unable to set variable '${_VARNAME}' from file '${_FILENAME}', value not found." >&2
|
||||
printf -- '%s\n' "FAILURE: - base.setFromFile(): Unable to set variable '${_base_setFromFile_VARNAME}' from file '${_base_setFromFile_FILENAME}', value not found." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
@@ -7,11 +7,9 @@ source /cis/core/base.module.sh
|
||||
|
||||
|
||||
function prepareFolder() {
|
||||
local _HOME_FOLDER _SSH_FOLDER _USER
|
||||
_SSH_FOLDER="${1:?"prepareFolder(): Missing parameter SSH_PATH"}"
|
||||
_HOME_FOLDER="${_SSH_FOLDER%%/.ssh*}" #Removes longest matching pattern '/.ssh*' from the end
|
||||
_USER="${_HOME_FOLDER##*/}" #Removes longest matching pattern '*/' from the begin
|
||||
readonly _HOME_FOLDER _SSH_FOLDER _USER
|
||||
local -r _SSH_FOLDER="${1:?"prepareFolder(): Missing parameter SSH_PATH"}"
|
||||
local -r _HOME_FOLDER="${_SSH_FOLDER%%/.ssh*}" #Removes longest matching pattern '/.ssh*' from the end
|
||||
local -r _USER="${_HOME_FOLDER##*/}" #Removes longest matching pattern '*/' from the begin
|
||||
|
||||
! id "${_USER}" &> /dev/null \
|
||||
&& echo "FAIL: The given user does not exist: ("$(readlink -f ${0})")" \
|
||||
@@ -67,10 +65,8 @@ function prepareFolder() {
|
||||
}
|
||||
|
||||
function ensureGroupMembership() {
|
||||
local _SSH_GROUP _USER
|
||||
_SSH_GROUP="ssh_login"
|
||||
_USER="${1:?"ensureGroupMembership(): Missing first parameter USER"}"
|
||||
readonly _SSH_GROUP _USER
|
||||
local -r _SSH_GROUP="ssh_login"
|
||||
local -r _USER="${1:?"ensureGroupMembership(): Missing first parameter USER"}"
|
||||
|
||||
! id "${_USER}" &> /dev/null \
|
||||
&& echo "FAIL: The given user does not exist: ("$(readlink -f ${0})")" \
|
||||
@@ -107,17 +103,16 @@ function ensureGroupMembership() {
|
||||
}
|
||||
|
||||
function defineAuthorizedKeysOfUser() {
|
||||
local _CIS_ROOT _CORE_SCRIPTS _DOMAIN _DEFINITIONS _USER
|
||||
_DEFINITIONS="$(realpath -s "${1:?"Missing first parameter DEFINITIONS: 'ROOT/definitions/DOMAIN'"}")"
|
||||
_CIS_ROOT="${_DEFINITIONS%%/definitions/*}/" #Removes longest matching pattern '/definitions/*' from the end
|
||||
_DOMAIN="${_DEFINITIONS##*/definitions/}" #Removes longest matching pattern '*/definitions/' from the begin
|
||||
_DOMAIN="${_DOMAIN%/}" #Removes shortest matching pattern '/' from the end
|
||||
local _DEFINITIONS="$(realpath -s "${1:?"Missing first parameter DEFINITIONS: 'ROOT/definitions/DOMAIN'"}")"
|
||||
local -r _CIS_ROOT="${_DEFINITIONS%%/definitions/*}/" #Removes longest matching pattern '/definitions/*' from the end
|
||||
local _DOMAIN="${_DEFINITIONS##*/definitions/}" #Removes longest matching pattern '*/definitions/' from the begin
|
||||
readonly _DOMAIN="${_DOMAIN%/}" #Removes shortest matching pattern '/' from the end
|
||||
#Build from components for safety
|
||||
_DEFINITIONS="${_CIS_ROOT:?"Missing ROOT"}definitions/${_DOMAIN:?"Missing DOMAIN"}"
|
||||
readonly _DEFINITIONS="${_CIS_ROOT:?"Missing ROOT"}definitions/${_DOMAIN:?"Missing DOMAIN"}"
|
||||
|
||||
_USER="${2:?"Missing second parameter USER"}"
|
||||
_CORE_SCRIPTS="${_CIS_ROOT:?"Missing ROOT"}core/"
|
||||
readonly _CIS_ROOT _CORE_SCRIPTS _DOMAIN _DEFINITIONS _USER
|
||||
|
||||
local -r _USER="${2:?"Missing second parameter USER"}"
|
||||
local -r _CORE_SCRIPTS="${_CIS_ROOT:?"Missing ROOT"}core/"
|
||||
|
||||
case "${_USER:?"Missing USER"}" in
|
||||
root)
|
||||
|
||||
@@ -34,9 +34,7 @@ function isCoreDefinition() {
|
||||
}
|
||||
|
||||
function filterInvalidAuthorizedKeysFilesOfRoot() {
|
||||
local _FILE_DEFINED
|
||||
_FILE_DEFINED="${1:?"Missing DEFINITION FILE"}"
|
||||
readonly _FILE_DEFINED
|
||||
local -r _FILE_DEFINED="${1:?"Missing DEFINITION FILE"}"
|
||||
|
||||
#If the full filename contains 'root/.ssh/authorized_keys' then check the content.
|
||||
#Skip lines starting with '#' and if at least one remaining line contains 'ssh' and '@' then print the filename.
|
||||
@@ -56,15 +54,13 @@ function filterInvalidAuthorizedKeysFilesOfRoot() {
|
||||
}
|
||||
|
||||
function printSelectedDefinition() {
|
||||
local _DEFINITIONS _CORE_FILE_DEFAULT_ALL_HOSTS _CORE_FILE_DEFINED_ALL_HOSTS _CORE_FILE_DEFINED_THIS_HOST _FILE_DEFAULT_ALL_HOSTS _FILE_DEFINED_ALL_HOSTS _FILE_DEFINED_THIS_HOST
|
||||
_DEFINITIONS="${1:?"Missing CIS_ROOT"}definitions/${2:?"Missing DOMAIN"}/"
|
||||
_CORE_FILE_DEFAULT_ALL_HOSTS="${1:?"Missing CIS_ROOT"}definitions/default/core/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
_CORE_FILE_DEFINED_ALL_HOSTS="${_DEFINITIONS:?"Missing DEFINITIONS"}core/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
_CORE_FILE_DEFINED_THIS_HOST="${_DEFINITIONS:?"Missing DEFINITIONS"}core/$(hostname -s)${3:?"Missing CURRENT_FULLFILE"}"
|
||||
_FILE_DEFAULT_ALL_HOSTS="${1:?"Missing CIS_ROOT"}definitions/default/hosts/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
_FILE_DEFINED_ALL_HOSTS="${_DEFINITIONS:?"Missing DEFINITIONS"}hosts/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
_FILE_DEFINED_THIS_HOST="${_DEFINITIONS:?"Missing DEFINITIONS"}hosts/$(hostname -s)${3:?"Missing CURRENT_FULLFILE"}"
|
||||
readonly _DEFINITIONS _CORE_FILE_DEFAULT_ALL_HOSTS _CORE_FILE_DEFINED_ALL_HOSTS _CORE_FILE_DEFINED_THIS_HOST _FILE_DEFAULT_ALL_HOSTS _FILE_DEFINED_ALL_HOSTS _FILE_DEFINED_THIS_HOST
|
||||
local -r _DEFINITIONS="${1:?"Missing CIS_ROOT"}definitions/${2:?"Missing DOMAIN"}/"
|
||||
local -r _CORE_FILE_DEFAULT_ALL_HOSTS="${1:?"Missing CIS_ROOT"}definitions/default/core/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
local -r _CORE_FILE_DEFINED_ALL_HOSTS="${_DEFINITIONS:?"Missing DEFINITIONS"}core/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
local -r _CORE_FILE_DEFINED_THIS_HOST="${_DEFINITIONS:?"Missing DEFINITIONS"}core/$(hostname -s)${3:?"Missing CURRENT_FULLFILE"}"
|
||||
local -r _FILE_DEFAULT_ALL_HOSTS="${1:?"Missing CIS_ROOT"}definitions/default/hosts/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
local -r _FILE_DEFINED_ALL_HOSTS="${_DEFINITIONS:?"Missing DEFINITIONS"}hosts/all${3:?"Missing CURRENT_FULLFILE"}"
|
||||
local -r _FILE_DEFINED_THIS_HOST="${_DEFINITIONS:?"Missing DEFINITIONS"}hosts/$(hostname -s)${3:?"Missing CURRENT_FULLFILE"}"
|
||||
|
||||
#The following are special definitions that affect the core functionality.
|
||||
#Try this host first because it should be priorized.
|
||||
@@ -105,12 +101,10 @@ function printSelectedDefinition() {
|
||||
}
|
||||
|
||||
function createSymlinkToDefinition() {
|
||||
local _CURRENT_FOLDER _CURRENT_FULLFILE _DEFINED_FULLFILE _SAVED_FULLFILE
|
||||
_CURRENT_FOLDER="${1:?"Missing CURRENT_FOLDER"}"
|
||||
_CURRENT_FULLFILE="${2:?"Missing CURRENT_FULLFILE"}"
|
||||
_DEFINED_FULLFILE="${3:?"Missing DEFINED_FULLFILE"}"
|
||||
_SAVED_FULLFILE="${4:?"Missing SAVED_FULLFILE"}"
|
||||
readonly _CURRENT_FOLDER _CURRENT_FULLFILE _DEFINED_FULLFILE _SAVED_FULLFILE
|
||||
local -r _CURRENT_FOLDER="${1:?"Missing CURRENT_FOLDER"}"
|
||||
local -r _CURRENT_FULLFILE="${2:?"Missing CURRENT_FULLFILE"}"
|
||||
local -r _DEFINED_FULLFILE="${3:?"Missing DEFINED_FULLFILE"}"
|
||||
local -r _SAVED_FULLFILE="${4:?"Missing SAVED_FULLFILE"}"
|
||||
|
||||
[ -f "${_CURRENT_FULLFILE}" ] \
|
||||
&& [ "$(sha256sum "${_DEFINED_FULLFILE}" | cut -d' ' -f1)" == "$(sha256sum "${_CURRENT_FULLFILE}" | cut -d' ' -f1)" ] \
|
||||
@@ -132,36 +126,35 @@ function createSymlinkToDefinition() {
|
||||
}
|
||||
|
||||
function ensureUsageOfDefinitions() {
|
||||
local _CIS_ROOT _CURRENT_FILE _CURRENT_FOLDER _CURRENT_FULLFILE _DEFINITIONS _DOMAIN _DEFINED_FULLFILE _NOW _SAVED_FULLFILE
|
||||
_DEFINITIONS="$(realpath -s "${1:?"Missing first parameter DEFINITIONS: 'ROOT/definitions/DOMAIN'"}")/"
|
||||
_CIS_ROOT="${_DEFINITIONS%%/definitions/*}/" #Removes longest matching pattern '/definitions/*' from the end
|
||||
_DOMAIN="${_DEFINITIONS##*/definitions/}" #Removes longest matching pattern '*/definitions/' from the begin
|
||||
_DOMAIN="${_DOMAIN%/}" #Removes shortest matching pattern '/' from the end
|
||||
local _DEFINITIONS="$(realpath -s "${1:?"Missing first parameter DEFINITIONS: 'ROOT/definitions/DOMAIN'"}")/"
|
||||
local -r _CIS_ROOT="${_DEFINITIONS%%/definitions/*}/" #Removes longest matching pattern '/definitions/*' from the end
|
||||
local _DOMAIN="${_DEFINITIONS##*/definitions/}" #Removes longest matching pattern '*/definitions/' from the begin
|
||||
readonly _DOMAIN="${_DOMAIN%/}" #Removes shortest matching pattern '/' from the end
|
||||
#Build from components for safety
|
||||
_DEFINITIONS="$(printIfEqual "${_DEFINITIONS}" "${_CIS_ROOT:?"Missing ROOT"}definitions/${_DOMAIN:?"Missing DOMAIN"}/")"
|
||||
readonly _DEFINITIONS="$(printIfEqual "${_DEFINITIONS}" "${_CIS_ROOT:?"Missing ROOT"}definitions/${_DOMAIN:?"Missing DOMAIN"}/")"
|
||||
|
||||
|
||||
_CURRENT_FULLFILE="${2:?"Missing second parameter CURRENT_FULLFILE"}"
|
||||
_CURRENT_FOLDER="${_CURRENT_FULLFILE%/*}/" #Removes shortest matching pattern '/*' from the end
|
||||
! [ -d "${_CURRENT_FOLDER}" ] \
|
||||
local _CURRENT_FULLFILE="${2:?"Missing second parameter CURRENT_FULLFILE"}"
|
||||
local _CURRENT_FOLDER="${_CURRENT_FULLFILE%/*}/" #Removes shortest matching pattern '/*' from the end
|
||||
if [ -d "${_CURRENT_FOLDER:?"Missing CURRENT_FOLDER"}" ]; then
|
||||
_CURRENT_FOLDER="$(realpath -s "${_CURRENT_FOLDER}")"
|
||||
readonly _CURRENT_FOLDER="${_CURRENT_FOLDER%/}/" #Removes shortest matching pattern '/' from the end
|
||||
else
|
||||
true \
|
||||
&& echo "FAIL: The folder cannot be read: ("$(readlink -f ${0})")" \
|
||||
&& echo " - '${_CURRENT_FOLDER}'" \
|
||||
&& echo " - user '"$(whoami)"' has insufficient rights on this host '$(hostname -s)'" \
|
||||
&& echo " - or the folder does not exist." \
|
||||
&& return 1
|
||||
|
||||
_CURRENT_FOLDER="$(realpath -s "${_CURRENT_FOLDER:?"Missing CURRENT_FOLDER"}")"
|
||||
_CURRENT_FOLDER="${_CURRENT_FOLDER%/}/" #Removes shortest matching pattern '/' from the end
|
||||
|
||||
_CURRENT_FILE="$(basename "${2:?"Missing second parameter CURRENT_FULLFILE"}")"
|
||||
fi
|
||||
local -r _CURRENT_FILE="$(basename "${2:?"Missing second parameter CURRENT_FULLFILE"}")"
|
||||
#Build from components for safety
|
||||
_CURRENT_FULLFILE="${_CURRENT_FOLDER:?"Missing CURRENT_FOLDER"}${_CURRENT_FILE:?"Missing CURRENT_FILE"}"
|
||||
readonly _CURRENT_FULLFILE="${_CURRENT_FOLDER:?"Missing CURRENT_FOLDER"}${_CURRENT_FILE:?"Missing CURRENT_FILE"}"
|
||||
|
||||
|
||||
_DEFINED_FULLFILE="$(printSelectedDefinition "${_CIS_ROOT}" "${_DOMAIN}" "${_CURRENT_FULLFILE}")"
|
||||
_NOW="$(date +%Y%m%d_%H%M)"
|
||||
_SAVED_FULLFILE="${_CURRENT_FULLFILE}.backup@${_NOW:?"Missing NOW"}"
|
||||
readonly _CIS_ROOT _CURRENT_FILE _CURRENT_FOLDER _CURRENT_FULLFILE _DEFINITIONS _DOMAIN _DEFINED_FULLFILE _NOW _SAVED_FULLFILE
|
||||
local -r _DEFINED_FULLFILE="$(printSelectedDefinition "${_CIS_ROOT}" "${_DOMAIN}" "${_CURRENT_FULLFILE}")"
|
||||
local -r _NOW="$(date +%Y%m%d_%H%M)"
|
||||
local -r _SAVED_FULLFILE="${_CURRENT_FULLFILE}.backup@${_NOW:?"Missing NOW"}"
|
||||
|
||||
[ -z "${_DEFINED_FULLFILE}" ] \
|
||||
&& isCoreDefinition "${_CURRENT_FULLFILE}" \
|
||||
|
||||
Reference in new issue
Block a user