Initial import: Music_Server, MusicFree, catalog-sync
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
trim_env_whitespace() {
|
||||
local value="$1"
|
||||
value="${value#"${value%%[![:space:]]*}"}"
|
||||
value="${value%"${value##*[![:space:]]}"}"
|
||||
printf '%s' "${value}"
|
||||
}
|
||||
|
||||
load_env_file() {
|
||||
local env_file="$1"
|
||||
local raw_line=""
|
||||
local normalized=""
|
||||
local key=""
|
||||
local value=""
|
||||
local trimmed_value=""
|
||||
local quote_char=""
|
||||
|
||||
[[ -f "${env_file}" ]] || return 1
|
||||
|
||||
while IFS= read -r raw_line || [[ -n "${raw_line}" ]]; do
|
||||
raw_line="${raw_line%$'\r'}"
|
||||
normalized="$(trim_env_whitespace "${raw_line}")"
|
||||
if [[ -z "${normalized}" || "${normalized:0:1}" == "#" ]]; then
|
||||
continue
|
||||
fi
|
||||
if [[ "${normalized}" == export\ * ]]; then
|
||||
normalized="${normalized#export }"
|
||||
fi
|
||||
if [[ "${normalized}" != *=* ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
key="$(trim_env_whitespace "${normalized%%=*}")"
|
||||
if [[ -z "${key}" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
value="${normalized#*=}"
|
||||
trimmed_value="$(trim_env_whitespace "${value}")"
|
||||
if [[ ${#trimmed_value} -ge 2 ]]; then
|
||||
quote_char="${trimmed_value:0:1}"
|
||||
if [[ ( "${quote_char}" == "'" || "${quote_char}" == '"' ) && "${trimmed_value: -1}" == "${quote_char}" ]]; then
|
||||
value="${trimmed_value:1:${#trimmed_value}-2}"
|
||||
else
|
||||
value="${trimmed_value}"
|
||||
fi
|
||||
else
|
||||
value="${trimmed_value}"
|
||||
fi
|
||||
|
||||
printf -v "${key}" '%s' "${value}"
|
||||
export "${key}"
|
||||
done < "${env_file}"
|
||||
}
|
||||
Reference in New Issue
Block a user