This repository has been archived by the owner on Jun 1, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
envbot.sh
59 lines (52 loc) · 1.67 KB
/
envbot.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#! /usr/bin/env bash
function envbot_auto() {
if [[ "$PWD" != "$ENVBOT_PWD" ]]
then
for line in ${ENVBOT_TMP[@]}
do
local _name="${line%%=*}"
local _value="${line##*=}"
local _globalvalue="${!_name}"
if [[ "$_value" != "$_globalvalue" ]]
then
export $_name="$_value"
fi
done
unset ENVBOT_TMP
local _path="$PWD/"
while [[ -n "$_path" ]]
do
_path="${_path%/*}"
local _env="${_path}/.env"
if [[ -r "$_env" ]]
then
while IFS="=" read -r name value
do
local _name=$(eval echo "$name")
local _value=$(eval echo "$value")
local _globalvalue="${!_name}"
local _set
if [[ "$_value" != "$_globalvalue" ]]
then
for line in ${ENVBOT_TMP[@]}
do
if [[ "$line" =~ ^$_name ]]
then
_set=0
break
fi
done
if [[ ! $_set ]]
then
ENVBOT_TMP+=("$_name=$_globalvalue")
export $_name="$_value"
# printf "envbot: Set %s=%s\n" "$_name" "$_value"
fi
fi
done < "$_env"
fi
done
ENVBOT_PWD="$PWD"
fi
}
export PROMPT_COMMAND=envbot_auto