diff options
| author | Paul Buetow <paul@buetow.org> | 2026-01-29 21:39:06 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-01-29 21:39:06 +0200 |
| commit | 599bdb74efcc97e86ce6023c1ae8265b1c2ff33b (patch) | |
| tree | 6642a7401de622efc90947586f4db7a3e6ccd75d /internal/clients | |
| parent | a32f028487c2e0b9e3144cf82d4153d1cd4a5243 (diff) | |
refactor: improve Go best practices compliance
- Add explicit interface satisfaction checks (var _ Interface = (*Type)(nil)) for compile-time verification:
- TurboWriter implementations (DirectTurboWriter, TurboChannelWriter)
- Processor implementations (GrepLineProcessor, ChannellessLineProcessor)
- Parser implementations (genericParser, csvParser, genericKVParser, custom parsers, mimecastParser)
- Logger implementations (file, stdout)
- Handler implementations (ServerHandler, ClientHandler)
- Connector implementations (Serverless, ServerConnection)
- SSH callback implementations (KnownHostsCallback)
- Improve error handling with context wrapping (%w):
- SSH operations: GeneratePrivateRSAKey, Agent
- Query parsing: Query.parse
- SSH client connections: dial, session, handle methods
- Fix receiver consistency:
- Convert Query.String() from value to pointer receiver
- Convert Outfile.String() from value to pointer receiver
- Convert all KnownHostsCallback methods to pointer receivers
- Convert mapCommand.Start() to pointer receiver
- Reorganize file structure for better clarity:
- internal/io/dlog/dlog.go: Move type definition before public functions
- internal/mapr/token.go: Reorganize helper functions after public ones
- Add documentation comments:
- Query.String() method
- Outfile.String() method
- Regex.String() method
- Improve config variable documentation
All unit tests and integration tests pass.
Amp-Thread-ID: https://ampcode.com/threads/T-019c0b08-0eeb-705d-a1f7-31bb764b659a
Co-authored-by: Amp <amp@ampcode.com>
Diffstat (limited to 'internal/clients')
| -rw-r--r-- | internal/clients/connectors/serverconnection.go | 12 | ||||
| -rw-r--r-- | internal/clients/connectors/serverless.go | 2 | ||||
| -rw-r--r-- | internal/clients/handlers/clienthandler.go | 2 |
3 files changed, 11 insertions, 5 deletions
diff --git a/internal/clients/connectors/serverconnection.go b/internal/clients/connectors/serverconnection.go index 5c3d455..34d3997 100644 --- a/internal/clients/connectors/serverconnection.go +++ b/internal/clients/connectors/serverconnection.go @@ -32,6 +32,8 @@ type ServerConnection struct { throttlingDone bool } +var _ Connector = (*ServerConnection)(nil) + // NewServerConnection returns a new DTail SSH server connection. func NewServerConnection(server string, userName string, authMethods []ssh.AuthMethod, hostKeyCallback client.HostKeyCallback, @@ -135,7 +137,7 @@ func (c *ServerConnection) dial(ctx context.Context, cancel context.CancelFunc, client, err := ssh.Dial("tcp", address, c.config) if err != nil { - return err + return fmt.Errorf("failed to dial SSH connection to %s: %w", address, err) } defer client.Close() @@ -149,7 +151,7 @@ func (c *ServerConnection) session(ctx context.Context, cancel context.CancelFun dlog.Client.Debug(c.server, "Creating SSH session") session, err := client.NewSession() if err != nil { - return err + return fmt.Errorf("failed to create SSH session for %s: %w", c.server, err) } defer session.Close() return c.handle(ctx, cancel, session, throttleCh) @@ -161,14 +163,14 @@ func (c *ServerConnection) handle(ctx context.Context, cancel context.CancelFunc dlog.Client.Debug(c.server, "Creating handler for SSH session") stdinPipe, err := session.StdinPipe() if err != nil { - return err + return fmt.Errorf("failed to get SSH session stdin pipe for %s: %w", c.server, err) } stdoutPipe, err := session.StdoutPipe() if err != nil { - return err + return fmt.Errorf("failed to get SSH session stdout pipe for %s: %w", c.server, err) } if err := session.Shell(); err != nil { - return err + return fmt.Errorf("failed to start SSH shell for %s: %w", c.server, err) } go func() { diff --git a/internal/clients/connectors/serverless.go b/internal/clients/connectors/serverless.go index 7cebf8a..eaaa770 100644 --- a/internal/clients/connectors/serverless.go +++ b/internal/clients/connectors/serverless.go @@ -18,6 +18,8 @@ type Serverless struct { userName string } +var _ Connector = (*Serverless)(nil) + // NewServerless starts a new serverless session. func NewServerless(userName string, handler handlers.Handler, commands []string) *Serverless { diff --git a/internal/clients/handlers/clienthandler.go b/internal/clients/handlers/clienthandler.go index 27ac85e..4d29429 100644 --- a/internal/clients/handlers/clienthandler.go +++ b/internal/clients/handlers/clienthandler.go @@ -10,6 +10,8 @@ type ClientHandler struct { baseHandler } +var _ Handler = (*ClientHandler)(nil) + // NewClientHandler creates a new client handler. func NewClientHandler(server string) *ClientHandler { dlog.Client.Debug(server, "Creating new client handler") |
