From 3c117292cf8a711d4bf6b2361abd1d2ae511ae79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Wed, 21 Aug 2024 16:31:00 +0200 Subject: [PATCH 1/3] chore: add support for nilerr --- .golangci.yml | 1 + internal/namespaces/config/commands.go | 2 +- internal/namespaces/instance/v1/custom_server_rdp.go | 8 ++++---- internal/namespaces/instance/v1/custom_ssh_config.go | 2 +- internal/namespaces/object/v1/s3configfile.go | 2 +- internal/namespaces/rdb/v1/custom_instance.go | 2 +- internal/namespaces/registry/v1/custom_image.go | 2 +- internal/namespaces/registry/v1/custom_tag.go | 4 ++-- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index b17eefcb0d..e88441bfee 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -29,6 +29,7 @@ linters: - ineffassign # Detects when assignments to existing variables are not used [fast: true, auto-fix: false] - misspell # Finds commonly misspelled English words in comments [fast: true, auto-fix: true] - nakedret # Finds naked returns in functions greater than a specified function length [fast: true, auto-fix: false] + - nilerr # Finds the code that returns nil even if it checks that the error is not nil. [fast: false, auto-fix: false] - nolintlint # Reports ill-formed or insufficient nolint directives [fast: true, auto-fix: false] - prealloc # Finds slice declarations that could potentially be pre-allocated [fast: true, auto-fix: false] - predeclared # find code that shadows one of Go's predeclared identifiers [fast: true, auto-fix: false] diff --git a/internal/namespaces/config/commands.go b/internal/namespaces/config/commands.go index 8524a6541d..ab4d01e130 100644 --- a/internal/namespaces/config/commands.go +++ b/internal/namespaces/config/commands.go @@ -541,7 +541,7 @@ func configDestroyCommand() *core.Command { configPath := core.ExtractConfigPath(ctx) err := os.Remove(configPath) if err != nil { - return err, nil + return nil, err } return &core.SuccessResult{ Message: "successfully destroy config", diff --git a/internal/namespaces/instance/v1/custom_server_rdp.go b/internal/namespaces/instance/v1/custom_server_rdp.go index 72afe57e17..a440ec0685 100644 --- a/internal/namespaces/instance/v1/custom_server_rdp.go +++ b/internal/namespaces/instance/v1/custom_server_rdp.go @@ -152,9 +152,9 @@ func instanceServerGetRdpPasswordRun(ctx context.Context, argsI interface{}) (i } func parsePrivateKey(ctx context.Context, key []byte) (any, error) { - privateKey, err := ssh.ParseRawPrivateKey(key) - if err == nil { - return privateKey, err + _, err := ssh.ParseRawPrivateKey(key) + if err != nil { + return nil, errors.New("failed to parse private key") } // Key may need a passphrase missingPassphraseError := &ssh.PassphraseMissingError{} @@ -170,7 +170,7 @@ func parsePrivateKey(ctx context.Context, key []byte) (any, error) { return nil, fmt.Errorf("failed to read input: %w", err) } - privateKey, err = ssh.ParseRawPrivateKeyWithPassphrase(key, []byte(passphrase)) + privateKey, err := ssh.ParseRawPrivateKeyWithPassphrase(key, []byte(passphrase)) if err != nil { return nil, fmt.Errorf("failed to parse private key: %w", err) } diff --git a/internal/namespaces/instance/v1/custom_ssh_config.go b/internal/namespaces/instance/v1/custom_ssh_config.go index 128da44b5b..ae17ac93b7 100644 --- a/internal/namespaces/instance/v1/custom_ssh_config.go +++ b/internal/namespaces/instance/v1/custom_ssh_config.go @@ -139,7 +139,7 @@ Do you want the include statement to be added at the beginning of your file ?`, logger.Warningf("Failed to prompt, skipping include\n") return &core.SuccessResult{ Message: configFileGeneratedMessage + " " + configFilePath, - }, nil + }, err } if shouldIncludeConfig { diff --git a/internal/namespaces/object/v1/s3configfile.go b/internal/namespaces/object/v1/s3configfile.go index 9ac5efce52..8ea08c79e4 100644 --- a/internal/namespaces/object/v1/s3configfile.go +++ b/internal/namespaces/object/v1/s3configfile.go @@ -156,7 +156,7 @@ func (c s3config) getConfigFile(tool s3tool) (core.RawResult, error) { } res, err := json.Marshal(m) if err != nil { - return nil, nil + return nil, err } return append(res, '\n'), nil default: diff --git a/internal/namespaces/rdb/v1/custom_instance.go b/internal/namespaces/rdb/v1/custom_instance.go index c3fd843a88..255bc4152b 100644 --- a/internal/namespaces/rdb/v1/custom_instance.go +++ b/internal/namespaces/rdb/v1/custom_instance.go @@ -341,7 +341,7 @@ func instanceGetBuilder(c *core.Command) *core.Command { InstanceID: args.InstanceID, }, scw.WithAllPages()) if err != nil { - return res, nil + return nil, err } return struct { diff --git a/internal/namespaces/registry/v1/custom_image.go b/internal/namespaces/registry/v1/custom_image.go index ed385e8d08..3d86e96a8b 100644 --- a/internal/namespaces/registry/v1/custom_image.go +++ b/internal/namespaces/registry/v1/custom_image.go @@ -46,7 +46,7 @@ func imageGetBuilder(c *core.Command) *core.Command { NamespaceID: image.NamespaceID, }) if err != nil { - return getImageResp, nil + return getImageResp, err } res := customImage{ diff --git a/internal/namespaces/registry/v1/custom_tag.go b/internal/namespaces/registry/v1/custom_tag.go index acd4d0eb8c..17fea4cb55 100644 --- a/internal/namespaces/registry/v1/custom_tag.go +++ b/internal/namespaces/registry/v1/custom_tag.go @@ -44,14 +44,14 @@ func tagGetBuilder(c *core.Command) *core.Command { ImageID: tag.ImageID, }) if err != nil { - return getTagResp, nil + return getTagResp, err } namespace, err := api.GetNamespace(®istry.GetNamespaceRequest{ NamespaceID: image.NamespaceID, }) if err != nil { - return getTagResp, nil + return getTagResp, err } res := customTag{ From 6d636c1087c8c0c35d1623b567afd91665ba708c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Wed, 21 Aug 2024 16:43:24 +0200 Subject: [PATCH 2/3] Fix --- internal/namespaces/instance/v1/custom_server_rdp.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/namespaces/instance/v1/custom_server_rdp.go b/internal/namespaces/instance/v1/custom_server_rdp.go index a440ec0685..06eb57a7c3 100644 --- a/internal/namespaces/instance/v1/custom_server_rdp.go +++ b/internal/namespaces/instance/v1/custom_server_rdp.go @@ -152,9 +152,9 @@ func instanceServerGetRdpPasswordRun(ctx context.Context, argsI interface{}) (i } func parsePrivateKey(ctx context.Context, key []byte) (any, error) { - _, err := ssh.ParseRawPrivateKey(key) - if err != nil { - return nil, errors.New("failed to parse private key") + privateKey, err := ssh.ParseRawPrivateKey(key) + if err == nil { + return privateKey, nil } // Key may need a passphrase missingPassphraseError := &ssh.PassphraseMissingError{} @@ -170,7 +170,7 @@ func parsePrivateKey(ctx context.Context, key []byte) (any, error) { return nil, fmt.Errorf("failed to read input: %w", err) } - privateKey, err := ssh.ParseRawPrivateKeyWithPassphrase(key, []byte(passphrase)) + privateKey, err = ssh.ParseRawPrivateKeyWithPassphrase(key, []byte(passphrase)) if err != nil { return nil, fmt.Errorf("failed to parse private key: %w", err) } From 2377c84ad6df5d3f0bfbac15c122876e375141cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Thu, 22 Aug 2024 18:28:02 +0200 Subject: [PATCH 3/3] add warnings --- internal/namespaces/registry/v1/custom_tag.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/namespaces/registry/v1/custom_tag.go b/internal/namespaces/registry/v1/custom_tag.go index 17fea4cb55..f9ac43052a 100644 --- a/internal/namespaces/registry/v1/custom_tag.go +++ b/internal/namespaces/registry/v1/custom_tag.go @@ -8,6 +8,7 @@ import ( "github.com/scaleway/scaleway-cli/v2/internal/core" "github.com/scaleway/scaleway-cli/v2/internal/human" "github.com/scaleway/scaleway-sdk-go/api/registry/v1" + "github.com/scaleway/scaleway-sdk-go/logger" ) // @@ -44,14 +45,16 @@ func tagGetBuilder(c *core.Command) *core.Command { ImageID: tag.ImageID, }) if err != nil { - return getTagResp, err + logger.Warningf("cannot get image %s %s", tag.ImageID, err) + return getTagResp, nil } namespace, err := api.GetNamespace(®istry.GetNamespaceRequest{ NamespaceID: image.NamespaceID, }) if err != nil { - return getTagResp, err + logger.Warningf("cannot get namespace %s %s", image.NamespaceID, err) + return getTagResp, nil } res := customTag{