Add option to string replace values in namespace and classes.
This commit is contained in:
parent
edc01a5372
commit
709d26a389
@ -24,6 +24,10 @@ command -v zip >/dev/null 2>&1 || {
|
|||||||
echo >&2 "[error] We require zip for $PROGRAM_NAME v${PROGRAM_VERSION} to work, but it's not installed. Aborting."
|
echo >&2 "[error] We require zip for $PROGRAM_NAME v${PROGRAM_VERSION} to work, but it's not installed. Aborting."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
command -v sed >/dev/null 2>&1 || {
|
||||||
|
echo >&2 "[error] We require sed for $PROGRAM_NAME v${PROGRAM_VERSION} to work, but it's not installed. Aborting."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
# main function ˘Ô≈ôﺣ
|
# main function ˘Ô≈ôﺣ
|
||||||
function main() {
|
function main() {
|
||||||
@ -147,6 +151,7 @@ function getRepositoryDetails() {
|
|||||||
getConfigValue 'VDM_REPOSITORY_TOKEN_NAME' '.repository.token_name' false || VDM_REPOSITORY_TOKEN_NAME="VDM_GLOBAL_TOKEN"
|
getConfigValue 'VDM_REPOSITORY_TOKEN_NAME' '.repository.token_name' false || VDM_REPOSITORY_TOKEN_NAME="VDM_GLOBAL_TOKEN"
|
||||||
getConfigValue 'VDM_REPOSITORY_URL_NAME' '.repository.url_name' false || VDM_REPOSITORY_URL_NAME="VDM_GLOBAL_URL"
|
getConfigValue 'VDM_REPOSITORY_URL_NAME' '.repository.url_name' false || VDM_REPOSITORY_URL_NAME="VDM_GLOBAL_URL"
|
||||||
getConfigValue 'VDM_REPOSITORY_API_NAME' '.repository.api_name' false || VDM_REPOSITORY_API_NAME="VDM_GLOBAL_API"
|
getConfigValue 'VDM_REPOSITORY_API_NAME' '.repository.api_name' false || VDM_REPOSITORY_API_NAME="VDM_GLOBAL_API"
|
||||||
|
getConfigValue 'VDM_REPOSITORY_REPLACEMENT' '.repository.replace' false || unset VDM_REPOSITORY_REPLACEMENT
|
||||||
# set the package (api/url/toke)
|
# set the package (api/url/toke)
|
||||||
tmp_token=${!VDM_REPOSITORY_TOKEN_NAME}
|
tmp_token=${!VDM_REPOSITORY_TOKEN_NAME}
|
||||||
tmp_url=${!VDM_REPOSITORY_URL_NAME}
|
tmp_url=${!VDM_REPOSITORY_URL_NAME}
|
||||||
@ -569,6 +574,8 @@ function setPowerData() {
|
|||||||
fi
|
fi
|
||||||
# check that we got data
|
# check that we got data
|
||||||
if [ -n "${VDM_API_FILE_PATH}" ] && [ -f "${VDM_API_FILE_PATH}" ]; then
|
if [ -n "${VDM_API_FILE_PATH}" ] && [ -f "${VDM_API_FILE_PATH}" ]; then
|
||||||
|
# replace any strings in namespace as needed
|
||||||
|
[ -n "${VDM_REPOSITORY_REPLACEMENT}" ] && namespace=$(strReplace "${namespace}")
|
||||||
# add the name space
|
# add the name space
|
||||||
addNamespace "${namespace}"
|
addNamespace "${namespace}"
|
||||||
# set class folder path
|
# set class folder path
|
||||||
@ -577,6 +584,8 @@ function setPowerData() {
|
|||||||
mkdir -p "${class_path}"
|
mkdir -p "${class_path}"
|
||||||
# move the class into place
|
# move the class into place
|
||||||
mv -f "${VDM_API_FILE_PATH}" "${class_path}/${name}.php"
|
mv -f "${VDM_API_FILE_PATH}" "${class_path}/${name}.php"
|
||||||
|
# replace any strings in namespace as needed
|
||||||
|
[ -n "${VDM_REPOSITORY_REPLACEMENT}" ] && fileReplaceStrings "${class_path}/${name}.php"
|
||||||
else
|
else
|
||||||
# always clear memory
|
# always clear memory
|
||||||
clearPowerDataEnv
|
clearPowerDataEnv
|
||||||
@ -1516,6 +1525,56 @@ function _zip() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Perform string replacements (VDM_REPOSITORY_REPLACEMENT)
|
||||||
|
function strReplace() {
|
||||||
|
local content="$1"
|
||||||
|
local result="$content"
|
||||||
|
local pairs
|
||||||
|
local pair_decoded
|
||||||
|
local key
|
||||||
|
local value
|
||||||
|
|
||||||
|
# Extract keys and values and perform replacements
|
||||||
|
pairs=$(echo "$VDM_REPOSITORY_REPLACEMENT" | jq -r 'to_entries | .[] | @base64')
|
||||||
|
|
||||||
|
# Loop over the pairs without creating a subshell
|
||||||
|
while IFS= read -r pair; do
|
||||||
|
# Decode from base64
|
||||||
|
pair_decoded=$(echo "$pair" | base64 --decode)
|
||||||
|
key=$(echo "$pair_decoded" | jq -r .key)
|
||||||
|
value=$(echo "$pair_decoded" | jq -r .value)
|
||||||
|
|
||||||
|
# Perform replacements in the string
|
||||||
|
# shellcheck disable=SC2001
|
||||||
|
result=$(echo "$result" | sed "s|${key//\\/\\\\}|${value//\\/\\\\}|g")
|
||||||
|
done <<< "$pairs" # Redirect the variable into the loop to avoid subshells
|
||||||
|
|
||||||
|
echo "$result"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Replace strings in a file directly (VDM_REPOSITORY_REPLACEMENT)
|
||||||
|
function fileReplaceStrings() {
|
||||||
|
local file_path="$1"
|
||||||
|
|
||||||
|
# Check if the file exists
|
||||||
|
if [[ ! -f "$file_path" ]]; then
|
||||||
|
echo "File does not exist: $file_path"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract keys and values and perform replacements
|
||||||
|
echo "$VDM_REPOSITORY_REPLACEMENT" | jq -r 'to_entries | .[] | @base64' |
|
||||||
|
while IFS= read -r pair; do
|
||||||
|
# Decode from base64
|
||||||
|
pair_decoded=$(echo "$pair" | base64 --decode)
|
||||||
|
key=$(echo "$pair_decoded" | jq -r .key)
|
||||||
|
value=$(echo "$pair_decoded" | jq -r .value)
|
||||||
|
|
||||||
|
# Perform replacements in the file using unescaped values
|
||||||
|
sed -i "s|${key//\\/\\\\}|${value//\\/\\\\}|g" "$file_path"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# uninstalls the octopc program.
|
# uninstalls the octopc program.
|
||||||
function runUninstall() {
|
function runUninstall() {
|
||||||
# now remove the script
|
# now remove the script
|
||||||
|
Loading…
Reference in New Issue
Block a user