41 lines
		
	
	
		
			931 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			931 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash -eu
 | |
| 
 | |
| # Author: w0rp <devw0rp@gmail.com>
 | |
| # Description: 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; do
 | |
|     echo "$REPLY" >> "$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"
 | 
