summaryrefslogtreecommitdiff
path: root/internal/clients
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-09-18 14:41:25 +0300
committerPaul Buetow <paul@buetow.org>2021-10-02 12:26:29 +0300
commit6506e20f6c80f4acb7434eb9dd14f784a67189cd (patch)
tree1554831a5468729aa48c0baf3d5c9a78a8499288 /internal/clients
parent7fbea88cf55af9b3354b4a1334e49c38d0d920fc (diff)
add spartan mode
Diffstat (limited to 'internal/clients')
-rw-r--r--internal/clients/args.go34
-rw-r--r--internal/clients/baseclient.go3
-rw-r--r--internal/clients/catclient.go6
-rw-r--r--internal/clients/grepclient.go7
-rw-r--r--internal/clients/handlers/basehandler.go15
-rw-r--r--internal/clients/maprclient.go7
-rw-r--r--internal/clients/tailclient.go7
7 files changed, 56 insertions, 23 deletions
diff --git a/internal/clients/args.go b/internal/clients/args.go
index 7ce1634..081b911 100644
--- a/internal/clients/args.go
+++ b/internal/clients/args.go
@@ -1,6 +1,7 @@
package clients
import (
+ "flag"
"fmt"
"os"
"path/filepath"
@@ -30,14 +31,35 @@ type Args struct {
SSHHostKeyCallback gossh.HostKeyCallback
PrivateKeyPathFile string
Quiet bool
+ Spartan bool
+ NoColor bool
}
-// When no servers are given, connect to localhost!
-func (a *Args) handleEmptyServer() {
- if a.Discovery != "" || a.ServersStr != "" {
- return
+// Transform the arguments based on certain conditions.
+func (a *Args) Transform(args []string) {
+ // Interpret additional args as file list.
+ if a.What == "" {
+ var files []string
+ for _, file := range flag.Args() {
+ files = append(files, file)
+ }
+ a.What = strings.Join(files, ",")
+ }
+
+ if a.Spartan {
+ a.Quiet = true
+ a.NoColor = true
}
+}
+// TransformAfterConfigFile same as Transform, but after the config file has been read.
+func (a *Args) TransformAfterConfigFile() {
+ if a.Discovery == "" && a.ServersStr == "" {
+ a.handleEmptyServer()
+ }
+}
+
+func (a *Args) handleEmptyServer() {
fqdn, err := os.Hostname()
if err != nil {
logger.FatalExit(err)
@@ -68,3 +90,7 @@ func (a *Args) handleEmptyServer() {
a.What = strings.Join(filePaths, ",")
logger.Debug("Clean file paths", a.What)
}
+
+func (a *Args) SerializeOptions() string {
+ return fmt.Sprintf("quiet=%v:spartan=%v", a.Quiet, a.Spartan)
+}
diff --git a/internal/clients/baseclient.go b/internal/clients/baseclient.go
index 455174e..de0c101 100644
--- a/internal/clients/baseclient.go
+++ b/internal/clients/baseclient.go
@@ -41,9 +41,6 @@ type baseClient struct {
func (c *baseClient) init() {
logger.Debug("Initiating base client")
- // When empty server list provided, connect to localhost by default.
- c.Args.handleEmptyServer()
-
flag := regex.Default
if c.Args.RegexInvert {
flag = regex.Invert
diff --git a/internal/clients/catclient.go b/internal/clients/catclient.go
index b7b6131..d14cdcc 100644
--- a/internal/clients/catclient.go
+++ b/internal/clients/catclient.go
@@ -42,9 +42,11 @@ func (c CatClient) makeHandler(server string) handlers.Handler {
}
func (c CatClient) makeCommands() (commands []string) {
- options := fmt.Sprintf("quiet=%v", c.Args.Quiet)
for _, file := range strings.Split(c.What, ",") {
- commands = append(commands, fmt.Sprintf("%s:%s %s %s", c.Mode.String(), options, file, c.Regex.Serialize()))
+ commands = append(commands, fmt.Sprintf("%s:%s %s %s",
+ c.Mode.String(),
+ c.Args.SerializeOptions(),
+ file, c.Regex.Serialize()))
}
return
}
diff --git a/internal/clients/grepclient.go b/internal/clients/grepclient.go
index 652c31b..ea5022b 100644
--- a/internal/clients/grepclient.go
+++ b/internal/clients/grepclient.go
@@ -41,9 +41,12 @@ func (c GrepClient) makeHandler(server string) handlers.Handler {
}
func (c GrepClient) makeCommands() (commands []string) {
- options := fmt.Sprintf("quiet=%v", c.Args.Quiet)
for _, file := range strings.Split(c.What, ",") {
- commands = append(commands, fmt.Sprintf("%s:%s %s %s", c.Mode.String(), options, file, c.Regex.Serialize()))
+ commands = append(commands, fmt.Sprintf("%s:%s %s %s",
+ c.Mode.String(),
+ c.Args.SerializeOptions(),
+ file,
+ c.Regex.Serialize()))
}
return
diff --git a/internal/clients/handlers/basehandler.go b/internal/clients/handlers/basehandler.go
index 74559e9..0f2d1b5 100644
--- a/internal/clients/handlers/basehandler.go
+++ b/internal/clients/handlers/basehandler.go
@@ -67,9 +67,12 @@ func (h *baseHandler) Write(p []byte) (n int, err error) {
*/
case '\n', protocol.MessageDelimiter:
message := h.receiveBuf.String()
- if len(message) == 0 {
- continue
- }
+ /*
+ // dcat/grep should actually display empty lines.
+ if len(message) == 0 {
+ continue
+ }
+ */
h.handleMessageType(message)
h.receiveBuf.Reset()
default:
@@ -93,12 +96,8 @@ func (h *baseHandler) Read(p []byte) (n int, err error) {
// Handle various message types.
func (h *baseHandler) handleMessageType(message string) {
- if len(message) == 0 {
- return
- }
-
// Hidden server commands starti with a dot "."
- if message[0] == '.' {
+ if len(message) > 0 && message[0] == '.' {
h.handleHiddenMessage(message)
return
}
diff --git a/internal/clients/maprclient.go b/internal/clients/maprclient.go
index 68352ea..e6ab96b 100644
--- a/internal/clients/maprclient.go
+++ b/internal/clients/maprclient.go
@@ -116,7 +116,6 @@ func (c MaprClient) makeHandler(server string) handlers.Handler {
func (c MaprClient) makeCommands() (commands []string) {
commands = append(commands, fmt.Sprintf("map %s", c.query.RawQuery))
- options := fmt.Sprintf("quiet=%v", c.Args.Quiet)
modeStr := "cat"
if c.Mode == omode.TailClient {
@@ -128,7 +127,11 @@ func (c MaprClient) makeCommands() (commands []string) {
commands = append(commands, fmt.Sprintf("timeout %d %s %s %s", c.Timeout, modeStr, file, c.Regex.Serialize()))
continue
}
- commands = append(commands, fmt.Sprintf("%s:%s %s %s", modeStr, options, file, c.Regex.Serialize()))
+ commands = append(commands, fmt.Sprintf("%s:%s %s %s",
+ modeStr,
+ c.Args.SerializeOptions(),
+ file,
+ c.Regex.Serialize()))
}
return
diff --git a/internal/clients/tailclient.go b/internal/clients/tailclient.go
index cefbaa7..360354b 100644
--- a/internal/clients/tailclient.go
+++ b/internal/clients/tailclient.go
@@ -38,9 +38,12 @@ func (c TailClient) makeHandler(server string) handlers.Handler {
}
func (c TailClient) makeCommands() (commands []string) {
- options := fmt.Sprintf("quiet=%v", c.Args.Quiet)
for _, file := range strings.Split(c.What, ",") {
- commands = append(commands, fmt.Sprintf("%s:%s %s %s", c.Mode.String(), options, file, c.Regex.Serialize()))
+ commands = append(commands, fmt.Sprintf("%s:%s %s %s",
+ c.Mode.String(),
+ c.Args.SerializeOptions(),
+ file,
+ c.Regex.Serialize()))
}
logger.Debug(commands)