40 lines
		
	
	
		
			886 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			886 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash -eu
 | 
						|
 | 
						|
# This script wraps DMD so we can get something which is capable of reading
 | 
						|
# D code from stdin.
 | 
						|
 | 
						|
temp_file=`mktemp`
 | 
						|
mv "$temp_file" "$temp_file".d
 | 
						|
temp_file="$temp_file".d
 | 
						|
 | 
						|
trap "rm $temp_file" EXIT
 | 
						|
 | 
						|
while read line; do
 | 
						|
    echo "$line" >> "$temp_file"
 | 
						|
done
 | 
						|
 | 
						|
# Read imports from DUB.
 | 
						|
original_path="$(readlink -m .)"
 | 
						|
path="$original_path"
 | 
						|
import_line_options=''
 | 
						|
 | 
						|
# We need to look for variable configuration files in parent directories.
 | 
						|
while [ "$path" != '/' ]; do
 | 
						|
    if [ -f "$path/dub.sdl" ] || [ -f "$path/dub.json" ] || [ -f "$path/package.json" ]; then
 | 
						|
 | 
						|
        cd "$path"
 | 
						|
 | 
						|
         while read import_line; do
 | 
						|
            import_line_options="$import_line_options -I$import_line"
 | 
						|
        done <<< "$(dub describe --import-paths)"
 | 
						|
 | 
						|
        cd "$original_path"
 | 
						|
 | 
						|
        break
 | 
						|
    fi
 | 
						|
 | 
						|
    path="$(dirname "$path")"
 | 
						|
done
 | 
						|
 | 
						|
dmd $import_line_options "$@" "$temp_file"
 |