76 lines
1.3 KiB
Go
76 lines
1.3 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"os"
|
||
|
"os/signal"
|
||
|
"syscall"
|
||
|
|
||
|
"github.com/cosmtrek/air/runner"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
cfgPath string
|
||
|
debugMode bool
|
||
|
showVersion bool
|
||
|
)
|
||
|
|
||
|
func helpMessage() {
|
||
|
fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n\n", os.Args[0])
|
||
|
fmt.Printf("If no command is provided %s will start the runner with the provided flags\n\n", os.Args[0])
|
||
|
fmt.Println("Commands:")
|
||
|
fmt.Print(" init creates a .air.toml file with default settings to the current directory\n\n")
|
||
|
|
||
|
fmt.Println("Flags:")
|
||
|
flag.PrintDefaults()
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
flag.Usage = helpMessage
|
||
|
flag.StringVar(&cfgPath, "c", "", "config path")
|
||
|
flag.BoolVar(&debugMode, "d", false, "debug mode")
|
||
|
flag.BoolVar(&showVersion, "v", false, "show version")
|
||
|
flag.Parse()
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
fmt.Printf(`
|
||
|
__ _ ___
|
||
|
/ /\ | | | |_)
|
||
|
/_/--\ |_| |_| \_ %s, built with Go %s
|
||
|
|
||
|
`, airVersion, goVersion)
|
||
|
|
||
|
if showVersion {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if debugMode {
|
||
|
fmt.Println("[debug] mode")
|
||
|
}
|
||
|
|
||
|
sigs := make(chan os.Signal, 1)
|
||
|
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||
|
|
||
|
var err error
|
||
|
r, err := runner.NewEngine(cfgPath, debugMode)
|
||
|
if err != nil {
|
||
|
log.Fatal(err)
|
||
|
return
|
||
|
}
|
||
|
go func() {
|
||
|
<-sigs
|
||
|
r.Stop()
|
||
|
}()
|
||
|
|
||
|
defer func() {
|
||
|
if e := recover(); e != nil {
|
||
|
log.Fatalf("PANIC: %+v", e)
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
r.Run()
|
||
|
}
|