diff --git a/cmd/warren/cmd_run.go b/cmd/warren/cmd_run.go new file mode 100644 index 0000000..6e0d680 --- /dev/null +++ b/cmd/warren/cmd_run.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + "github.com/dballard/warren/lib/warren" + "log" + "net" + // "os" + // "os/exec" + // "time" +) + +var runUsage = ` +warren run - Interfaces with warrend to manage running instances +` + +var runCmd = &Command{ + Name: "run", + Usage: "", + Summary: "Interface to warrend to manage running instances", + Help: runUsage, + Run: runRun, +} + +func runRun(cmd *Command, args ...string) { + if len(args) == 0 || args[0] == "help" { + fmt.Print(cmd.Help) + return + } + + _, err := net.Dial(warren.CmdSockType(), warren.CmdSockAddr()) + if err != nil { + log.Fatal("Error connecting to warrend:", err) + } + +} diff --git a/cmd/warren/main.go b/cmd/warren/main.go index 4771e11..5ce7032 100644 --- a/cmd/warren/main.go +++ b/cmd/warren/main.go @@ -27,6 +27,7 @@ Commands:{{range .}} var commands = []*Command{ buildCmd, deployCmd, + runCmd, } func usage() { diff --git a/cmd/warren/warren b/cmd/warren/warren index 66594cd..31a7a30 100755 Binary files a/cmd/warren/warren and b/cmd/warren/warren differ diff --git a/cmd/warrend/main.go b/cmd/warrend/main.go index ad4b1a9..3748443 100644 --- a/cmd/warrend/main.go +++ b/cmd/warrend/main.go @@ -2,8 +2,12 @@ package main import ( "fmt" + "github.com/dballard/warren/lib/warren" "log" "net" + "os" + "os/signal" + "syscall" ) func cmdHandle(c net.Conn) { @@ -23,11 +27,26 @@ func cmdHandle(c net.Conn) { } func main() { - cmdSock, err := net.Listen("unix", "/tmp/warrend.sock") + + cmdSock, err := net.Listen(warren.CmdSockType(), warren.CmdSockAddr()) + defer cmdSock.Close() if err != nil { log.Fatal("Listen on sock error:", err) } + // Handle signals + c := make(chan os.Signal, 1) + signal.Notify(c, + syscall.SIGINT, + syscall.SIGTERM, + syscall.SIGQUIT, + syscall.SIGHUP, + ) + go func() { + _ = <-c + cmdSock.Close() + }() + for { fd, err := cmdSock.Accept() fmt.Println("accept") diff --git a/cmd/warrend/warrend b/cmd/warrend/warrend index db5586d..817a00d 100755 Binary files a/cmd/warrend/warrend and b/cmd/warrend/warrend differ diff --git a/lib/warren/warren.go b/lib/warren/warren.go index afa88f2..e42a4f6 100644 --- a/lib/warren/warren.go +++ b/lib/warren/warren.go @@ -8,6 +8,17 @@ import ( "strings" ) +var cmdSockType string = "unix" +var cmdSockAddr string = "/tmp/warrend.sock" + +func CmdSockType() string { + return cmdSockType +} + +func CmdSockAddr() string { + return cmdSockAddr +} + func GitHash() string { hash, err := exec.Command("git", "rev-parse", "HEAD").Output() if err != nil {