X-Git-Url: https://ruderich.org/simon/gitweb/?p=safcm%2Fsafcm.git;a=blobdiff_plain;f=cmd%2Fsafcm-remote%2Fmain.go;h=b6d784d827697deca168cd6d38cb7ce6f646a355;hp=a29f20c171747ac6f3a72935c33a1ca6e162dd8a;hb=9269fa3c94e700afc0be823f58ea473a2db8f3dc;hpb=fd97e8019e2ab166d9475ed59782c86247d8430b diff --git a/cmd/safcm-remote/main.go b/cmd/safcm-remote/main.go index a29f20c..b6d784d 100644 --- a/cmd/safcm-remote/main.go +++ b/cmd/safcm-remote/main.go @@ -18,97 +18,9 @@ package main import ( - "fmt" - "log" - "os" - - "golang.org/x/term" - - "ruderich.org/simon/safcm" - "ruderich.org/simon/safcm/cmd/safcm-remote/ainsl" - "ruderich.org/simon/safcm/cmd/safcm-remote/info" - "ruderich.org/simon/safcm/cmd/safcm-remote/run" - "ruderich.org/simon/safcm/cmd/safcm-remote/sync" + "ruderich.org/simon/safcm/remote" ) -func usage() { - log.Fatalf("usage: %[1]s sync\n"+ - "usage: %[1]s ainsl [options] ", - os.Args[0]) -} - func main() { - // Timestamps are added by `safcm` - log.SetFlags(0) - - if len(os.Args) < 2 { - usage() - } - - var err error - switch os.Args[1] { - case "sync": - if len(os.Args) != 2 { - usage() - } - err = mainLoop() - case "ainsl": - err = ainsl.Main(os.Args) - default: - usage() - } - - if err != nil { - log.Fatalf("%s: %v", os.Args[0], err) - } -} - -func mainLoop() error { - if term.IsTerminal(int(os.Stdin.Fd())) || - term.IsTerminal(int(os.Stdout.Fd())) { - return fmt.Errorf("sync should only be called from `safcm` " + - "(redirect stdin/stdout to circumvent this check)") - } - - conn := safcm.NewGobConn(os.Stdin, os.Stdout) - - var logLevel safcm.LogLevel - logFunc := func(level safcm.LogLevel, msg string) { - if logLevel >= level { - conn.Send(safcm.MsgLog{ - Level: level, - Text: msg, - }) - } - } - - var quitResp safcm.MsgQuitResp - for { - x, err := conn.Recv() - if err != nil { - return err - } - - var resp safcm.Msg - switch x := x.(type) { - case safcm.MsgInfoReq: - logLevel = x.LogLevel // set log level globally - resp = info.Handle(x, run.ExecRunner{}, logFunc) - case safcm.MsgSyncReq: - resp = sync.Handle(x, run.ExecRunner{}, logFunc) - case safcm.MsgQuitReq: - resp = quitResp - default: - return fmt.Errorf("unsupported message %#v", x) - } - - err = conn.Send(resp) - if err != nil { - return err - } - if resp == quitResp { - break - } - } - return nil + remote.Main() }