]> ruderich.org/simon Gitweb - safcm/safcm.git/blobdiff - cmd/safcm-remote/main.go
Move implementation of cmd/safcm-remote/ to remote/
[safcm/safcm.git] / cmd / safcm-remote / main.go
index a29f20c171747ac6f3a72935c33a1ca6e162dd8a..b6d784d827697deca168cd6d38cb7ce6f646a355 100644 (file)
 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] <path> <line>",
-               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()
 }