|
|
@@ -11,16 +11,17 @@ import (
|
|
|
)
|
|
|
|
|
|
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.")
|
|
|
+ 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.")
|
|
|
+
|
|
|
+ binPath string
|
|
|
)
|
|
|
|
|
|
func createTargetDirectory(version string, goOS GoOS, goArch GoArch) (string, error) {
|
|
|
suffix := getSuffix(goOS, goArch)
|
|
|
- GOPATH := os.Getenv("GOPATH")
|
|
|
|
|
|
- targetDir := filepath.Join(GOPATH, "bin", "v2ray-"+version+suffix)
|
|
|
+ targetDir := filepath.Join(binPath, "v2ray-"+version+suffix)
|
|
|
if version != "custom" {
|
|
|
os.RemoveAll(targetDir)
|
|
|
}
|
|
|
@@ -36,19 +37,31 @@ func getTargetFile(goOS GoOS) string {
|
|
|
return "v2ray" + suffix
|
|
|
}
|
|
|
|
|
|
+func getBinPath() string {
|
|
|
+ GOPATH := os.Getenv("GOPATH")
|
|
|
+ return filepath.Join(GOPATH, "bin")
|
|
|
+}
|
|
|
+
|
|
|
func main() {
|
|
|
flag.Parse()
|
|
|
+ binPath = getBinPath()
|
|
|
+ build(*flagTargetOS, *flagTargetArch, *flagArchive, "")
|
|
|
+}
|
|
|
|
|
|
- v2rayOS := parseOS(*targetOS)
|
|
|
- v2rayArch := parseArch(*targetArch)
|
|
|
+func build(targetOS, targetArch string, archive bool, version string) {
|
|
|
+ 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
|
|
|
+ if len(version) == 0 {
|
|
|
+ v, err := git.RepoVersionHead()
|
|
|
+ if v == git.VersionUndefined {
|
|
|
+ v = "custom"
|
|
|
+ }
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Unable to detect V2Ray version: " + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ version = v
|
|
|
}
|
|
|
fmt.Printf("Building V2Ray (%s) for %s %s\n", version, v2rayOS, v2rayArch)
|
|
|
|
|
|
@@ -68,9 +81,7 @@ func main() {
|
|
|
fmt.Println("Unable to copy config files: " + err.Error())
|
|
|
}
|
|
|
|
|
|
- if *archive {
|
|
|
- GOPATH := os.Getenv("GOPATH")
|
|
|
- binPath := filepath.Join(GOPATH, "bin")
|
|
|
+ if archive {
|
|
|
err := os.Chdir(binPath)
|
|
|
if err != nil {
|
|
|
fmt.Printf("Unable to switch to directory (%s): %v\n", binPath, err)
|