Skip to content

Commit

Permalink
improve error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
44smkn committed Jun 28, 2021
1 parent 7f684d7 commit 556ad33
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
12 changes: 8 additions & 4 deletions cmd/s3select/main.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"errors"
"fmt"
"os"

Expand All @@ -15,10 +16,7 @@ const (

// Errors start at 10
ExitCodeError = 10 + iota
ExitCodeParseFlagsError
ExitCodeLoggerError
ExitCodeCloudError
ExitCodeObjectListingError
ExitCodeInitializeError
)

func main() {
Expand All @@ -36,14 +34,20 @@ func run(args []string) int {
logger, err := log.New(logLevel)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to generate logger: %s", err.Error())
return ExitCodeInitializeError
}
cliFactory, err := cli.NewFactory(buildVersion, logger)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to initialize process: %s", err.Error())
return ExitCodeInitializeError
}
rootCmd := root.NewCmdRoot(cliFactory, buildVersion, buildDate)

if _, err := rootCmd.ExecuteC(); err != nil {
switch {
case errors.Is(err, cli.ValidateConfigError):
// advice for configuration
}
fmt.Fprintln(os.Stderr, err.Error())
}

Expand Down
7 changes: 7 additions & 0 deletions pkg/cli/errors.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package cli

import "errors"

var (
ValidateConfigError = errors.New("ValidateConfigError")
)
9 changes: 5 additions & 4 deletions pkg/query/object_selector.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ import (
"io"

"github.com/44smkn/s3select/pkg/aws"
"github.com/44smkn/s3select/pkg/cli"
"github.com/44smkn/s3select/pkg/config"
awssdk "github.com/aws/aws-sdk-go/aws"
awsclient "github.com/aws/aws-sdk-go/aws/client"
awsrequest "github.com/aws/aws-sdk-go/aws/request"
"github.com/aws/aws-sdk-go/service/s3"
s3sdk "github.com/aws/aws-sdk-go/service/s3"
"github.com/pkg/errors"
"go.uber.org/zap"
"golang.org/x/xerrors"
)

type ObjectSelector interface {
Expand Down Expand Up @@ -64,7 +65,7 @@ func (s defaultObjectSelector) Select(ctx context.Context, meta *ObjectMetadata,
r.Handlers.Send.RemoveByName(awsclient.LogHTTPResponseHeaderHandler.Name)
})
if err != nil {
return xerrors.Errorf("failed to execute s3api: %w", err)
return errors.Errorf("failed to execute s3api: %w", err)
}
defer resp.EventStream.Close()

Expand Down Expand Up @@ -100,7 +101,7 @@ func newInputSerialization(cfg *config.InputSerialization) (*s3sdk.InputSerializ
},
}, nil
default:
return nil, xerrors.New("choose a input format type from: [json, csv]")
return nil, errors.Errorf("choose a input format type from: [json, csv]: %w", cli.ValidateConfigError)
}
}

Expand All @@ -123,6 +124,6 @@ func newOutputSerialization(cfg *config.OutputSerialization) (*s3sdk.OutputSeria
},
}, nil
default:
return nil, xerrors.New("choose a output format type from: [json, csv]")
return nil, errors.Errorf("choose a output format type from: [json, csv]: %w", cli.ValidateConfigError)
}
}

0 comments on commit 556ad33

Please sign in to comment.