git.fiddlerwoaroof.com
Browse code

Add dependency system to zshrc

Ed Langley authored on 04/07/2017 19:56:02
Showing 8 changed files
... ...
@@ -9,3 +9,4 @@
9 9
 .xmonad/xmonad.o
10 10
 
11 11
 [#]*[#]
12
+*~
... ...
@@ -1,3 +1,5 @@
1
+#:depends-on:
2
+###
1 3
 if [[ $TERM != 'dumb' ]]; then
2 4
   # Solarized dircolors:
3 5
   CLICOLOR=1
... ...
@@ -1,3 +1,4 @@
1
+#:depends-on:foobar
1 2
 add_exe_path() {
2 3
   if [[ -d $1 ]]; then
3 4
     export PATH="$PATH:$1"
... ...
@@ -1,2 +1,3 @@
1
+#:depends-on:00-utils
1 2
 export JAVA_HOME="`/usr/libexec/java_home`"
2 3
 prepend_exe_path "$JAVA_HOME/bin"
... ...
@@ -1 +1,2 @@
1
+#:depends-on:00-utils
1 2
 add_exe_path "$HOME/pfff/bin"
... ...
@@ -1,3 +1,5 @@
1
+#:depends-on:00-utils
2
+###
1 3
 PATH="${PATH%%:<<<:*}:${PATH##*:>>>:}"
2 4
 
3 5
 prepend_exe_path "$HOME/cj-projects/software/bin"
4 6
new file mode 120000
... ...
@@ -0,0 +1 @@
1
+/Users/elangley/git_repos/dotfiles/zsh_plugins/00-utils.zsh
0 2
\ No newline at end of file
... ...
@@ -299,12 +299,56 @@ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib
299 299
 export VIMCLOJURE_SERVER_JAR="$HOME/lib/vimclojure/server-2.3.6.jar"
300 300
 export CLON_THEME=el
301 301
 
302
+typeset -A script_depends
303
+typeset -A loaded_depends
304
+get_depends() {
305
+    awk -F: '$0=="###" || $1 != "#" { exit } $1="depends-on" {print $3}' "$1"
306
+}
307
+
308
+build_depends() {
309
+    for depend in ${(f)$(get_depends "$1")}; do
310
+	script_depends[$1]+="$depend:"
311
+    done
312
+}
313
+
314
+load_depends() {
315
+    for depend in ${(s<:>)script_depends[$1]}; do
316
+	if [[ -z $loaded_depends[$depend] ]]; then
317
+	  local fn="$HOME/.zsh.d/dependencies/$depend.zsh"
318
+	  echo -n "loading dependency $fn ... "
319
+	  if [[ -f $fn ]]; then
320
+	    if [[ -z $script_depends[$fn] ]]; then
321
+	      build_depends "$fn"
322
+	    fi
323
+	    load_depends "$fn"
324
+	    source $fn
325
+	    echo "done."
326
+	  else
327
+	      echo "missing."
328
+	  fi
329
+	  loaded_depends[$depend]=1
330
+	else
331
+	    echo "dependency $depend already loaded."
332
+	fi
333
+    done
334
+}
335
+
302 336
 init_scripts=( $HOME/.zsh.d/*.{,z}sh(N) ) 
303 337
 
304 338
 PATH="<<<:$PATH:>>>"
339
+echo 
340
+echo 
341
+echo 
305 342
 for x in $init_scripts; do
343
+    echo loading module $x
344
+    build_depends "$x"
345
+    load_depends "$x"
346
+    echo loading $x
306 347
     source "$x"
307 348
 done
349
+echo 
350
+echo 
351
+echo 
308 352
 
309 353
 FORTUNE="$(command -v fortune)"
310 354
 if [ -x "$FORTUNE" ]; then