Merge a7e90a2575 into 7150268f84
This commit is contained in:
commit
b9b8a36e84
@ -129,7 +129,18 @@ upsert_env() {
|
||||
local -a keys=("$@")
|
||||
local tmp
|
||||
tmp="$(mktemp)"
|
||||
declare -A seen=()
|
||||
local -a seen_keys=()
|
||||
local has_seen
|
||||
has_seen() {
|
||||
local candidate="$1"
|
||||
local existing
|
||||
for existing in "${seen_keys[@]:-}"; do
|
||||
if [[ "$existing" == "$candidate" ]]; then
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
if [[ -f "$file" ]]; then
|
||||
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||
@ -138,7 +149,7 @@ upsert_env() {
|
||||
for k in "${keys[@]}"; do
|
||||
if [[ "$key" == "$k" ]]; then
|
||||
printf '%s=%s\n' "$k" "${!k-}" >>"$tmp"
|
||||
seen["$k"]=1
|
||||
seen_keys+=("$k")
|
||||
replaced=true
|
||||
break
|
||||
fi
|
||||
@ -150,7 +161,7 @@ upsert_env() {
|
||||
fi
|
||||
|
||||
for k in "${keys[@]}"; do
|
||||
if [[ -z "${seen[$k]:-}" ]]; then
|
||||
if ! has_seen "$k"; then
|
||||
printf '%s=%s\n' "$k" "${!k-}" >>"$tmp"
|
||||
fi
|
||||
done
|
||||
|
||||
Loading…
Reference in New Issue
Block a user