main.go 934 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "os"
  6. commlog "github.com/v2fly/v2ray-core/v4/common/log"
  7. "github.com/v2fly/v2ray-core/v4/infra/control"
  8. )
  9. func getCommandName() string {
  10. if len(os.Args) > 1 {
  11. return os.Args[1]
  12. }
  13. return ""
  14. }
  15. func main() {
  16. // let the v2ctl prints log at stderr
  17. commlog.RegisterHandler(commlog.NewLogger(commlog.CreateStderrLogWriter()))
  18. name := getCommandName()
  19. cmd := control.GetCommand(name)
  20. if cmd == nil {
  21. fmt.Fprintln(os.Stderr, "Unknown command:", name)
  22. fmt.Fprintln(os.Stderr)
  23. fmt.Println("v2ctl <command>")
  24. fmt.Println("Available commands:")
  25. control.PrintUsage()
  26. return
  27. }
  28. if err := cmd.Execute(os.Args[2:]); err != nil {
  29. hasError := false
  30. if err != flag.ErrHelp {
  31. fmt.Fprintln(os.Stderr, err.Error())
  32. fmt.Fprintln(os.Stderr)
  33. hasError = true
  34. }
  35. for _, line := range cmd.Description().Usage {
  36. fmt.Println(line)
  37. }
  38. if hasError {
  39. os.Exit(-1)
  40. }
  41. }
  42. }