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 "$@"
 |