From 1bd58b093618292c9ba6e0a742a8f9460e3fe82f Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 8 Mar 2025 22:23:18 +0100 Subject: [PATCH 1/2] service/logs: remove pkg/errors, and minor cleanups Signed-off-by: Sebastiaan van Stijn --- service/logs/parse_logs.go | 3 +-- service/logs/parse_logs_test.go | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/service/logs/parse_logs.go b/service/logs/parse_logs.go index 9771f484f69f..cc81f135ca54 100644 --- a/service/logs/parse_logs.go +++ b/service/logs/parse_logs.go @@ -3,10 +3,9 @@ package logs import ( + "errors" "net/url" "strings" - - "github.com/pkg/errors" ) // ParseLogDetails parses a string of key value pairs in the form diff --git a/service/logs/parse_logs_test.go b/service/logs/parse_logs_test.go index 5226409fef50..772213536e86 100644 --- a/service/logs/parse_logs_test.go +++ b/service/logs/parse_logs_test.go @@ -50,7 +50,7 @@ func TestParseLogDetails(t *testing.T) { t.Run(tc.line, func(t *testing.T) { actual, err := ParseLogDetails(tc.line) if tc.expectedErr != "" { - assert.Check(t, is.ErrorContains(err, tc.expectedErr)) + assert.Check(t, is.Error(err, tc.expectedErr)) } else { assert.Check(t, err) } From 6bd6b3e8ac2ff25996d7bf0e39b15c28b939fba1 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 8 Mar 2025 22:28:33 +0100 Subject: [PATCH 2/2] service/logs: move to cli/internal/logdetails This package is only used by cli/command/service, and has no external consumers. Signed-off-by: Sebastiaan van Stijn --- cli/command/service/logs.go | 4 ++-- {service/logs => cli/internal/logdetails}/parse_logs.go | 9 ++++----- .../logs => cli/internal/logdetails}/parse_logs_test.go | 6 +++--- 3 files changed, 9 insertions(+), 10 deletions(-) rename {service/logs => cli/internal/logdetails}/parse_logs.go (80%) rename {service/logs => cli/internal/logdetails}/parse_logs_test.go (92%) diff --git a/cli/command/service/logs.go b/cli/command/service/logs.go index 00b8562ca469..f1b61627fbd7 100644 --- a/cli/command/service/logs.go +++ b/cli/command/service/logs.go @@ -13,7 +13,7 @@ import ( "github.com/docker/cli/cli/command" "github.com/docker/cli/cli/command/completion" "github.com/docker/cli/cli/command/idresolver" - "github.com/docker/cli/service/logs" + "github.com/docker/cli/cli/internal/logdetails" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/swarm" @@ -267,7 +267,7 @@ func (lw *logWriter) Write(buf []byte) (int, error) { return 0, errors.Errorf("invalid context in log message: %v", string(buf)) } // parse the details out - details, err := logs.ParseLogDetails(string(parts[detailsIndex])) + details, err := logdetails.Parse(string(parts[detailsIndex])) if err != nil { return 0, err } diff --git a/service/logs/parse_logs.go b/cli/internal/logdetails/parse_logs.go similarity index 80% rename from service/logs/parse_logs.go rename to cli/internal/logdetails/parse_logs.go index cc81f135ca54..b5788d41a6d1 100644 --- a/service/logs/parse_logs.go +++ b/cli/internal/logdetails/parse_logs.go @@ -1,6 +1,5 @@ -/*Package logs contains tools for parsing docker log lines. - */ -package logs +// Package logdetails contains tools for parsing docker log lines. +package logdetails import ( "errors" @@ -8,14 +7,14 @@ import ( "strings" ) -// ParseLogDetails parses a string of key value pairs in the form +// Parse parses a string of key value pairs in the form // "k=v,l=w", where the keys and values are url query escaped, and each pair // is separated by a comma. Returns a map of the key value pairs on success, // and an error if the details string is not in a valid format. // // The details string encoding is implemented in // github.com/moby/moby/api/server/httputils/write_log_stream.go -func ParseLogDetails(details string) (map[string]string, error) { +func Parse(details string) (map[string]string, error) { pairs := strings.Split(details, ",") detailsMap := make(map[string]string, len(pairs)) for _, pair := range pairs { diff --git a/service/logs/parse_logs_test.go b/cli/internal/logdetails/parse_logs_test.go similarity index 92% rename from service/logs/parse_logs_test.go rename to cli/internal/logdetails/parse_logs_test.go index 772213536e86..a0cc21b3f8d6 100644 --- a/service/logs/parse_logs_test.go +++ b/cli/internal/logdetails/parse_logs_test.go @@ -1,4 +1,4 @@ -package logs +package logdetails import ( "testing" @@ -7,7 +7,7 @@ import ( is "gotest.tools/v3/assert/cmp" ) -func TestParseLogDetails(t *testing.T) { +func TestParse(t *testing.T) { testCases := []struct { line string expected map[string]string @@ -48,7 +48,7 @@ func TestParseLogDetails(t *testing.T) { } for _, tc := range testCases { t.Run(tc.line, func(t *testing.T) { - actual, err := ParseLogDetails(tc.line) + actual, err := Parse(tc.line) if tc.expectedErr != "" { assert.Check(t, is.Error(err, tc.expectedErr)) } else {