github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/cmd/chore/dev/orbctl/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "os" 6 "os/exec" 7 "os/signal" 8 "syscall" 9 10 "github.com/caos/orbos/cmd/chore" 11 ) 12 13 func main() { 14 15 var debug, skipRequild bool 16 for idx, arg := range os.Args { 17 switch arg { 18 case "--debug": 19 debug = true 20 removeFromCommandArguments(idx) 21 case "--skip-rebuild": 22 skipRequild = true 23 removeFromCommandArguments(idx) 24 } 25 } 26 27 ctx, cancel := context.WithCancel(context.Background()) 28 defer cancel() 29 30 signalChannel := make(chan os.Signal) 31 signal.Notify(signalChannel, 32 syscall.SIGTERM, 33 syscall.SIGINT, 34 syscall.SIGQUIT, 35 ) 36 37 go func() { 38 <-signalChannel 39 cancel() 40 }() 41 42 newOrbctl, err := chore.Orbctl(debug, skipRequild) 43 if err != nil { 44 panic(err) 45 } 46 47 cmd := newOrbctl(ctx) 48 cmd.Args = append(cmd.Args, os.Args[1:]...) 49 cmd.Stderr = os.Stderr 50 cmd.Stdout = os.Stdout 51 cmd.Stdin = os.Stdin 52 53 if err := cmd.Run(); err != nil { 54 os.Exit(err.(*exec.ExitError).ExitCode()) 55 } 56 } 57 58 func removeFromCommandArguments(idx int) { 59 os.Args = append(os.Args[0:idx], os.Args[idx+1:]...) 60 }