github.com/yang-ricky/air@v1.30.0/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "log" 7 "os" 8 "os/signal" 9 "syscall" 10 11 "github.com/yang-ricky/air/runner" 12 ) 13 14 var ( 15 cfgPath string 16 debugMode bool 17 showVersion bool 18 runArgs []string 19 ) 20 21 func helpMessage() { 22 fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n\n", os.Args[0]) 23 fmt.Printf("If no command is provided %s will start the runner with the provided flags\n\n", os.Args[0]) 24 fmt.Println("Commands:") 25 fmt.Print(" init creates a .air.toml file with default settings to the current directory\n\n") 26 27 fmt.Println("Flags:") 28 flag.PrintDefaults() 29 } 30 31 func init() { 32 flag.Usage = helpMessage 33 flag.StringVar(&cfgPath, "c", "", "config path") 34 flag.BoolVar(&debugMode, "d", false, "debug mode") 35 flag.BoolVar(&showVersion, "v", false, "show version") 36 flag.Parse() 37 } 38 39 func main() { 40 fmt.Printf(` 41 __ _ ___ 42 / /\ | | | |_) 43 /_/--\ |_| |_| \_ %s, built with Go %s 44 45 `, airVersion, goVersion) 46 47 if showVersion { 48 return 49 } 50 51 if debugMode { 52 fmt.Println("[debug] mode") 53 } 54 55 sigs := make(chan os.Signal, 1) 56 signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) 57 58 var err error 59 r, err := runner.NewEngine(cfgPath, debugMode) 60 if err != nil { 61 log.Fatal(err) 62 return 63 } 64 go func() { 65 <-sigs 66 r.Stop() 67 }() 68 69 defer func() { 70 if e := recover(); e != nil { 71 log.Fatalf("PANIC: %+v", e) 72 } 73 }() 74 75 r.Run() 76 }