|  | @@ -11,6 +11,7 @@ import (
 | 
	
		
			
				|  |  |  )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  var (
 | 
	
		
			
				|  |  | +	flagTargetDir    = flag.String("dir", "", "Directory to put generated files.")
 | 
	
		
			
				|  |  |  	flagTargetOS     = flag.String("os", runtime.GOOS, "Target OS of this build.")
 | 
	
		
			
				|  |  |  	flagTargetArch   = flag.String("arch", runtime.GOARCH, "Target CPU arch of this build.")
 | 
	
		
			
				|  |  |  	flagArchive      = flag.Bool("zip", false, "Whether to make an archive of files or not.")
 | 
	
	
		
			
				|  | @@ -20,12 +21,18 @@ var (
 | 
	
		
			
				|  |  |  )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func createTargetDirectory(version string, goOS GoOS, goArch GoArch) (string, error) {
 | 
	
		
			
				|  |  | -	suffix := getSuffix(goOS, goArch)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	targetDir := filepath.Join(binPath, "v2ray-"+version+suffix)
 | 
	
		
			
				|  |  | -	if version != "custom" {
 | 
	
		
			
				|  |  | -		os.RemoveAll(targetDir)
 | 
	
		
			
				|  |  | +	var targetDir string
 | 
	
		
			
				|  |  | +	if len(*flagTargetDir) > 0 {
 | 
	
		
			
				|  |  | +		targetDir = *flagTargetDir
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +		suffix := getSuffix(goOS, goArch)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		targetDir = filepath.Join(binPath, "v2ray-"+version+suffix)
 | 
	
		
			
				|  |  | +		if version != "custom" {
 | 
	
		
			
				|  |  | +			os.RemoveAll(targetDir)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	err := os.MkdirAll(targetDir, os.ModeDir|0777)
 | 
	
		
			
				|  |  |  	return targetDir, err
 | 
	
		
			
				|  |  |  }
 |