build.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. "path/filepath"
  7. "runtime"
  8. "github.com/v2ray/v2ray-core/tools/git"
  9. )
  10. var (
  11. targetOS = flag.String("os", runtime.GOOS, "Target OS of this build.")
  12. targetArch = flag.String("arch", runtime.GOARCH, "Target CPU arch of this build.")
  13. archive = flag.Bool("zip", false, "Whether to make an archive of files or not.")
  14. )
  15. func createTargetDirectory(version string, goOS GoOS, goArch GoArch) (string, error) {
  16. suffix := "-custom"
  17. if version != "custom" {
  18. suffix = getSuffix(goOS, goArch)
  19. }
  20. GOPATH := os.Getenv("GOPATH")
  21. targetDir := filepath.Join(GOPATH, "bin", "v2ray"+suffix)
  22. if version != "custom" {
  23. os.RemoveAll(targetDir)
  24. }
  25. err := os.MkdirAll(targetDir, os.ModeDir|0777)
  26. return targetDir, err
  27. }
  28. func getTargetFile(goOS GoOS) string {
  29. suffix := ""
  30. if goOS == "Windows" {
  31. suffix += ".exe"
  32. }
  33. return "v2ray" + suffix
  34. }
  35. func main() {
  36. flag.Parse()
  37. fmt.Println(os.Args)
  38. v2rayOS := parseOS(*targetOS)
  39. v2rayArch := parseArch(*targetArch)
  40. version, err := git.RepoVersionHead()
  41. if version == git.VersionUndefined {
  42. version = "custom"
  43. }
  44. if err != nil {
  45. fmt.Println("Unable to detect V2Ray version: " + err.Error())
  46. return
  47. }
  48. fmt.Printf("Building V2Ray (%s) for %s %s\n", version, v2rayOS, v2rayArch)
  49. version = "v1.0"
  50. targetDir, err := createTargetDirectory(version, v2rayOS, v2rayArch)
  51. if err != nil {
  52. fmt.Println("Unable to create directory " + targetDir + ": " + err.Error())
  53. }
  54. targetFile := getTargetFile(v2rayOS)
  55. err = buildV2Ray(filepath.Join(targetDir, targetFile), version, v2rayOS, v2rayArch)
  56. if err != nil {
  57. fmt.Println("Unable to build V2Ray: " + err.Error())
  58. }
  59. err = copyConfigFiles(targetDir, v2rayOS)
  60. if err != nil {
  61. fmt.Println("Unable to copy config files: " + err.Error())
  62. }
  63. }