main.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "v2ray.com/core/common"
  8. )
  9. func main() {
  10. pwd, err := os.Getwd()
  11. if err != nil {
  12. fmt.Println("can not get current working directory")
  13. os.Exit(1)
  14. }
  15. pkg := filepath.Base(pwd)
  16. if pkg == "v2ray-core" {
  17. pkg = "core"
  18. }
  19. moduleName, gmnErr := common.GetModuleName(pwd)
  20. if gmnErr != nil {
  21. fmt.Println("can not get module path", gmnErr)
  22. os.Exit(1)
  23. }
  24. file, err := os.OpenFile("errors.generated.go", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
  25. if err != nil {
  26. log.Fatalf("Failed to generate errors.generated.go: %v", err)
  27. os.Exit(1)
  28. }
  29. defer file.Close()
  30. fmt.Fprintln(file, "package", pkg)
  31. fmt.Fprintln(file, "")
  32. fmt.Fprintln(file, "import \""+moduleName+"/common/errors\"")
  33. fmt.Fprintln(file, "")
  34. fmt.Fprintln(file, "type errPathObjHolder struct{}")
  35. fmt.Fprintln(file, "")
  36. fmt.Fprintln(file, "func newError(values ...interface{}) *errors.Error {")
  37. fmt.Fprintln(file, " return errors.New(values...).WithPathObj(errPathObjHolder{})")
  38. fmt.Fprintln(file, "}")
  39. }