| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | package mainimport (	"flag"	"fmt"	"os"	"path/filepath"	"runtime"	"github.com/v2ray/v2ray-core/tools/git")var (	targetOS   = flag.String("os", runtime.GOOS, "Target OS of this build.")	targetArch = flag.String("arch", runtime.GOARCH, "Target CPU arch of this build.")	archive    = flag.Bool("zip", false, "Whether to make an archive of files or not."))func createTargetDirectory(version string, goOS GoOS, goArch GoArch) (string, error) {	suffix := "-custom"	if version != "custom" {		suffix = getSuffix(goOS, goArch)	}	GOPATH := os.Getenv("GOPATH")	targetDir := filepath.Join(GOPATH, "bin", "v2ray-"+version+suffix)	if version != "custom" {		os.RemoveAll(targetDir)	}	err := os.MkdirAll(targetDir, os.ModeDir|0777)	return targetDir, err}func getTargetFile(goOS GoOS) string {	suffix := ""	if goOS == "Windows" {		suffix += ".exe"	}	return "v2ray" + suffix}func main() {	flag.Parse()	fmt.Println(os.Args)	v2rayOS := parseOS(*targetOS)	v2rayArch := parseArch(*targetArch)	version, err := git.RepoVersionHead()	if version == git.VersionUndefined {		version = "custom"	}	if err != nil {		fmt.Println("Unable to detect V2Ray version: " + err.Error())		return	}	fmt.Printf("Building V2Ray (%s) for %s %s\n", version, v2rayOS, v2rayArch)	version = "v1.0"	targetDir, err := createTargetDirectory(version, v2rayOS, v2rayArch)	if err != nil {		fmt.Println("Unable to create directory " + targetDir + ": " + err.Error())	}	targetFile := getTargetFile(v2rayOS)	err = buildV2Ray(filepath.Join(targetDir, targetFile), version, v2rayOS, v2rayArch)	if err != nil {		fmt.Println("Unable to build V2Ray: " + err.Error())	}	err = copyConfigFiles(targetDir, v2rayOS)	if err != nil {		fmt.Println("Unable to copy config files: " + err.Error())	}	if *archive {		GOPATH := os.Getenv("GOPATH")		binPath := filepath.Join(GOPATH, "bin")		err := os.Chdir(binPath)		if err != nil {			fmt.Printf("Unable to switch to directory (%s): %v\n", binPath, err)		}		suffix := getSuffix(v2rayOS, v2rayArch)		zipFile := "v2ray" + suffix + ".zip"		root := filepath.Base(targetDir)		err = zipFolder(root, zipFile)		if err != nil {			fmt.Println("Unable to create archive (%s): %v\n", zipFile, err)		}	}}
 |