|
36 | 36 | #
|
37 | 37 | # direnv: loading .envrc
|
38 | 38 | # /bin/bash: line 226: $1: unbound variable
|
| 39 | +# |
| 40 | +# source_up causes this error is up .envrc is found in parent directories: |
| 41 | +# |
| 42 | +# direnv: No ancestor .envrc found |
39 | 43 |
|
40 | 44 | set -euo pipefail
|
41 | 45 | [ -n "${DEBUG:-}" ] && set -x
|
42 |
| -srcdir="$(cd "$(dirname "$(readlink "${BASH_SOURCE[0]}")" )" && pwd)" |
| 46 | +src="$(readlink -f "${BASH_SOURCE[0]}")" |
| 47 | +srcdir="$(cd "$(dirname "$src")" && pwd)" |
43 | 48 |
|
44 | 49 | # ============================================================================ #
|
45 | 50 | # P r e - C o m m i t
|
@@ -96,19 +101,35 @@ export COMPOSE_PROJECT_NAME="SQL-scripts"
|
96 | 101 | # P y t h o n , A W S , G C P , T e r r a f o r m
|
97 | 102 | # ============================================================================ #
|
98 | 103 |
|
| 104 | +# XXX: safer to bring all these external .envrc inline if you're worried about changes |
| 105 | +# to it bypassing 'direnv allow' authorization |
99 | 106 | load_if_exists(){
|
| 107 | + # first arg is a path to a .envrc |
| 108 | + # all other args are passed to the sourcing of .envrc - used by .envrc-kubernetes |
| 109 | + # to pass the context name 'docker-desktop' to switch to |
100 | 110 | local envrc="$1"
|
101 |
| - if [ -f "$srcdir/$envrc" ]; then |
| 111 | + shift |
| 112 | + if ! [[ "$envrc" =~ ^/ ]]; then |
| 113 | + envrc="$srcdir/$envrc" |
| 114 | + fi |
| 115 | + if [ -f "$envrc" ]; then |
| 116 | + # prevent looping on symlinks to this .envrc if given |
| 117 | + if [ "$(readlink "$envrc")" = "$src" ]; then |
| 118 | + return |
| 119 | + fi |
102 | 120 | echo
|
103 |
| - echo "Loading $srcdir/$envrc" |
| 121 | + echo "Loading $envrc" |
104 | 122 | # shellcheck disable=SC1090,SC1091
|
105 |
| - . "$srcdir/$envrc" |
| 123 | + . "$envrc" "$@" |
106 | 124 | fi
|
107 | 125 | }
|
108 | 126 |
|
| 127 | +#load_if_exists ~/.envrc |
| 128 | + |
109 | 129 | #.envrc-aws \
|
110 | 130 | #.envrc-gcp \
|
111 | 131 | #.envrc-terraform \
|
| 132 | +# shellcheck disable=SC2043 |
112 | 133 | for envrc in \
|
113 | 134 | .envrc-python \
|
114 | 135 | ; do
|
|
132 | 153 | # ============================================================================ #
|
133 | 154 |
|
134 | 155 | if [ -f "$srcdir/.envrc-kubernetes" ]; then
|
135 |
| - echo |
136 |
| - echo "Loading $srcdir/.envrc-kubernetes" |
137 |
| - # XXX: safer to inline .envrc-kubernetes if you're worried about changes to it bypassing 'direnv allow' authorization |
138 |
| - # shellcheck disable=SC1090,SC1091 |
139 |
| - . "$srcdir/.envrc-kubernetes" docker-desktop |
| 156 | + load_if_exists .envrc-kubernetes docker-desktop |
140 | 157 | fi
|
141 | 158 |
|
142 | 159 | # ============================================================================ #
|
|
0 commit comments