39 lines
		
	
	
	
		
			690 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			690 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/usr/bin/env zsh
 | |
| # Eryn Wells <eryn@erynwells.me>
 | |
| 
 | |
| function load_module
 | |
| {
 | |
|     local mod=$1
 | |
|     if [[ -z "$mod" ]]; then
 | |
|         print "Missing argument: path to module to load." >&2
 | |
|         return -1
 | |
|     fi
 | |
| 
 | |
|     # Make sure $mod isn't already in $fpath
 | |
|     local modpath
 | |
|     for p in $fpath; do
 | |
|         modpath=$p/$mod
 | |
|         [[ -d $modpath ]] && break
 | |
|         modpath=''
 | |
|     done
 | |
| 
 | |
|     if [[ -z "$modpath" ]]; then
 | |
|         return 1
 | |
|     fi
 | |
| 
 | |
|     fpath+=($modpath)
 | |
| 
 | |
|     for file in $modpath/*; do
 | |
|         if [[ -f "$file" ]]; then
 | |
|             autoload $func
 | |
|         fi
 | |
| 
 | |
|         if [[ -d "$file" ]]; then
 | |
|             load_module "$file"
 | |
|         fi
 | |
|     done
 | |
| 
 | |
|     return 0
 | |
| }
 | |
| 
 | |
| load_module "$@"
 |