X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=cmd%2Fsafcm-remote%2Fmain.go;h=d17446017b89940786420e07d2b0415a84cf6c47;hb=HEAD;hp=ea81daf3eb400325f2f794128b8c498a3fb7894f;hpb=f2f2bc47e8729548f3c10117f7f008b547c4afc5;p=safcm%2Fsafcm.git diff --git a/cmd/safcm-remote/main.go b/cmd/safcm-remote/main.go index ea81daf..d174460 100644 --- a/cmd/safcm-remote/main.go +++ b/cmd/safcm-remote/main.go @@ -1,86 +1,14 @@ -// Helper copied to the remote hosts to run commands and deploy configuration +// Helper copied to the remote host to run commands and deploy configuration -// Copyright (C) 2021 Simon Ruderich -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: GPL-3.0-or-later +// Copyright (C) 2021-2024 Simon Ruderich package main import ( - "fmt" - "log" - "os" - - "ruderich.org/simon/safcm" - "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 main() { - if len(os.Args) != 1 { - log.SetFlags(0) - log.Fatalf("usage: %s", os.Args[0]) - } - - log.SetFlags(0) - err := mainLoop() - if err != nil { - log.Fatalf("%s: %v", os.Args[0], err) - } -} - -func mainLoop() error { - conn := safcm.NewGobConn(os.Stdin, os.Stdout) - - var logLevel safcm.LogLevel - logFunc := func(level safcm.LogLevel, format string, a ...interface{}) { - if logLevel >= level { - conn.Send(safcm.MsgLog{ - Level: level, - Text: fmt.Sprintf(format, a...), - }) - } - } - - 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() }