Skip to content

Commit 14b2db7

Browse files
committed
refac: update return statements with pkg/errors
Signed-off-by: vg006 <devvg006@gmail.com>
1 parent 4b1ad4c commit 14b2db7

7 files changed

Lines changed: 59 additions & 60 deletions

File tree

cmd/harbor/root/artifact/list.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@
1414
package artifact
1515

1616
import (
17-
"fmt"
18-
1917
"github.com/goharbor/go-client/pkg/sdk/v2.0/client/artifact"
2018
"github.com/goharbor/harbor-cli/pkg/api"
19+
"github.com/goharbor/harbor-cli/pkg/errors"
2120
"github.com/goharbor/harbor-cli/pkg/prompt"
2221
"github.com/goharbor/harbor-cli/pkg/utils"
2322
artifactViews "github.com/goharbor/harbor-cli/pkg/views/artifact/list"
@@ -44,11 +43,11 @@ Supports pagination, search queries, and sorting using flags.`,
4443
Args: cobra.MaximumNArgs(1),
4544
RunE: func(cmd *cobra.Command, args []string) error {
4645
if opts.PageSize < 0 {
47-
return fmt.Errorf("page size must be greater than or equal to 0")
46+
return errors.New("Invalid page size", "page size must be greater than or equal to 0")
4847
}
4948

5049
if opts.PageSize > 100 {
51-
return fmt.Errorf("page size should be less than or equal to 100")
50+
return errors.New("Invalid page size", "page size must be less than or equal to 100")
5251
}
5352
var err error
5453
var artifacts artifact.ListArtifactsOK
@@ -57,26 +56,25 @@ Supports pagination, search queries, and sorting using flags.`,
5756
if len(args) > 0 {
5857
projectName, repoName, err = utils.ParseProjectRepo(args[0])
5958
if err != nil {
60-
return fmt.Errorf("failed to parse project/repo: %v", err)
59+
return errors.New("Invalid project/repository format", "expected format: <project>/<repository>")
6160
}
6261
} else {
6362
projectName, err = prompt.GetProjectNameFromUser()
6463
if err != nil {
65-
return fmt.Errorf("failed to get project name: %v", utils.ParseHarborErrorMsg(err))
64+
return errors.AsError(err).WithMessage("failed to get project name")
6665
}
6766
repoName = prompt.GetRepoNameFromUser(projectName)
6867
}
6968

7069
artifacts, err = api.ListArtifact(projectName, repoName, opts)
7170

7271
if err != nil {
73-
return fmt.Errorf("failed to list artifacts: %v", err)
72+
return errors.AsError(err).WithMessage("failed to list artifacts")
7473
}
7574

7675
FormatFlag := viper.GetString("output-format")
7776
if FormatFlag != "" {
78-
err = utils.PrintFormat(artifacts, FormatFlag)
79-
if err != nil {
77+
if err = utils.PrintFormat(artifacts, FormatFlag); err != nil {
8078
return err
8179
}
8280
} else {

pkg/prompt/prompt.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
package prompt
1515

1616
import (
17-
"errors"
1817
"fmt"
1918
"strconv"
2019

@@ -24,6 +23,7 @@ import (
2423
"github.com/goharbor/go-client/pkg/sdk/v2.0/models"
2524
"github.com/goharbor/harbor-cli/pkg/api"
2625
"github.com/goharbor/harbor-cli/pkg/constants"
26+
"github.com/goharbor/harbor-cli/pkg/errors"
2727
aview "github.com/goharbor/harbor-cli/pkg/views/artifact/select"
2828
tview "github.com/goharbor/harbor-cli/pkg/views/artifact/tags/select"
2929
immview "github.com/goharbor/harbor-cli/pkg/views/immutable/select"
@@ -102,7 +102,7 @@ func GetProjectNameFromUser() (string, error) {
102102
go func() {
103103
response, err := api.ListAllProjects()
104104
if err != nil {
105-
resultChan <- result{"", err}
105+
resultChan <- result{"", errors.NewWithCause(err, "failed to list projects")}
106106
return
107107
}
108108

@@ -116,7 +116,7 @@ func GetProjectNameFromUser() (string, error) {
116116
if err == pview.ErrUserAborted {
117117
resultChan <- result{"", errors.New("user aborted project selection")}
118118
} else {
119-
resultChan <- result{"", fmt.Errorf("error during project selection: %w", err)}
119+
resultChan <- result{"", errors.NewWithCause(err, "error during project selection")}
120120
}
121121
return
122122
}

pkg/utils/client.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ package utils
1515

1616
import (
1717
"context"
18-
"fmt"
1918
"sync"
2019

2120
"github.com/goharbor/go-client/pkg/harbor"
2221
v2client "github.com/goharbor/go-client/pkg/sdk/v2.0/client"
22+
"github.com/goharbor/harbor-cli/pkg/errors"
2323
log "github.com/sirupsen/logrus"
2424
)
2525

@@ -33,12 +33,12 @@ func GetClient() (*v2client.HarborAPI, error) {
3333
ClientOnce.Do(func() {
3434
config, err := GetCurrentHarborConfig()
3535
if err != nil {
36-
ClientErr = fmt.Errorf("failed to get current credential name: %v", err)
36+
ClientErr = errors.AsError(err).WithMessage("failed to get current credential name")
3737
return
3838
}
3939
credentialName := config.CurrentCredentialName
4040
if credentialName == "" {
41-
ClientErr = fmt.Errorf("no Harbor credentials found. Please run `harbor login` to configure access")
41+
ClientErr = errors.New("no Harbor credentials found.", "Please run `harbor login` to configure access")
4242
return
4343
}
4444

@@ -73,19 +73,19 @@ func GetClientByConfig(clientConfig *harbor.ClientSetConfig) *v2client.HarborAPI
7373
func GetClientByCredentialName(credentialName string) (*v2client.HarborAPI, error) {
7474
credential, err := GetCredentials(credentialName)
7575
if err != nil {
76-
return nil, fmt.Errorf("failed to get credential %s: %w", credentialName, err)
76+
return nil, errors.AsError(err).WithMessage("failed to get credential", "credential: "+credentialName)
7777
}
7878

7979
// Get encryption key
8080
key, err := GetEncryptionKey()
8181
if err != nil {
82-
return nil, fmt.Errorf("failed to get encryption key: %w", err)
82+
return nil, errors.NewWithCause(err, "failed to get encryption key")
8383
}
8484

8585
// Decrypt password
8686
decryptedPassword, err := Decrypt(key, string(credential.Password))
8787
if err != nil {
88-
return nil, fmt.Errorf("failed to decrypt password: %w", err)
88+
return nil, errors.NewWithCause(err, "failed to decrypt password")
8989
}
9090

9191
clientConfig := &harbor.ClientSetConfig{

pkg/utils/config.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
package utils
1515

1616
import (
17-
"errors"
1817
"fmt"
1918
"os"
2019
"path/filepath"
2120
"sync"
2221

2322
"github.com/goharbor/go-client/pkg/sdk/v2.0/models"
23+
"github.com/goharbor/harbor-cli/pkg/errors"
2424
log "github.com/sirupsen/logrus"
2525

2626
"github.com/spf13/viper"
@@ -75,7 +75,7 @@ func InitConfig(cfgFile string, userSpecifiedConfig bool) {
7575

7676
// Ensure data directory exists
7777
if err := os.MkdirAll(harborDataDir, os.ModePerm); err != nil {
78-
configInitError = fmt.Errorf("failed to create data directory: %w", err)
78+
configInitError = errors.NewWithCause(err, "failed to create data directory")
7979
log.Fatalf("%v", configInitError)
8080
}
8181

@@ -100,7 +100,7 @@ func InitConfig(cfgFile string, userSpecifiedConfig bool) {
100100

101101
var harborConfig HarborConfig
102102
if err := viper.Unmarshal(&harborConfig); err != nil {
103-
configInitError = fmt.Errorf("failed to unmarshal config file: %w", err)
103+
configInitError = errors.NewWithCause(err, "failed to unmarshal config file")
104104
log.Fatalf("%v", configInitError)
105105
}
106106

@@ -135,7 +135,7 @@ func DetermineConfigPath(cfgFile string, userSpecifiedConfig bool) (string, erro
135135
if userSpecifiedConfig && cfgFile != "" {
136136
harborConfigPath, err = filepath.Abs(cfgFile)
137137
if err != nil {
138-
return "", fmt.Errorf("failed to resolve absolute path for config file: %w", err)
138+
return "", errors.NewWithCause(err, "failed to resolve absolute path for config file")
139139
}
140140
return harborConfigPath, nil
141141
}
@@ -144,7 +144,7 @@ func DetermineConfigPath(cfgFile string, userSpecifiedConfig bool) (string, erro
144144
if harborEnvVar != "" {
145145
harborConfigPath, err = filepath.Abs(harborEnvVar)
146146
if err != nil {
147-
return "", fmt.Errorf("failed to resolve absolute path for config file from HARBOR_CLI_CONFIG: %w", err)
147+
return "", errors.NewWithCause(err, "failed to resolve absolute path for config file from HARBOR_CLI_CONFIG")
148148
}
149149
return harborConfigPath, nil
150150
}
@@ -154,13 +154,13 @@ func DetermineConfigPath(cfgFile string, userSpecifiedConfig bool) (string, erro
154154
if xdgConfigHome == "" {
155155
home, err := os.UserHomeDir()
156156
if err != nil {
157-
return "", fmt.Errorf("unable to determine user home directory: %w", err)
157+
return "", errors.NewWithCause(err, "unable to determine user home directory")
158158
}
159159
xdgConfigHome = filepath.Join(home, ".config")
160160
}
161161
harborConfigPath, err = filepath.Abs(filepath.Join(xdgConfigHome, "harbor-cli", "config.yaml"))
162162
if err != nil {
163-
return "", fmt.Errorf("failed to resolve absolute path for default config file: %w", err)
163+
return "", errors.NewWithCause(err, "failed to resolve absolute path for default config file")
164164
}
165165
return harborConfigPath, nil
166166
}
@@ -170,22 +170,22 @@ func EnsureConfigFileExists(harborConfigPath string) error {
170170
// Ensure parent directory exists
171171
configDir := filepath.Dir(harborConfigPath)
172172
if err := os.MkdirAll(configDir, os.ModePerm); err != nil {
173-
return fmt.Errorf("failed to create config directory: %w", err)
173+
return errors.NewWithCause(err, "failed to create config directory")
174174
}
175175

176176
if fileInfo, err := os.Stat(harborConfigPath); err != nil {
177177
// No need to throw error if config file does not exist
178178
if !os.IsNotExist(err) {
179-
return fmt.Errorf("error while checking config file: %w", err)
179+
return errors.NewWithCause(err, "error while checking config file")
180180
}
181181
} else if fileInfo.IsDir() {
182-
return fmt.Errorf("expected a file but found a directory at path: %s", harborConfigPath)
182+
return errors.Newf("expected a file but found a directory at path: %s", harborConfigPath)
183183
}
184184

185185
// Create config file if it doesn't exist
186186
if _, err := os.Stat(harborConfigPath); os.IsNotExist(err) {
187187
if err := CreateConfigFile(harborConfigPath); err != nil {
188-
return fmt.Errorf("failed to create config file: %w", err)
188+
return errors.NewWithCause(err, "failed to create config file")
189189
}
190190
}
191191
return nil
@@ -196,7 +196,7 @@ func ReadConfig(harborConfigPath string) error {
196196
viper.SetConfigFile(harborConfigPath)
197197
viper.SetConfigType("yaml")
198198
if err := viper.ReadInConfig(); err != nil {
199-
return fmt.Errorf("error reading config file: %w. Please ensure the config file exists", err)
199+
return errors.NewWithCause(err, "error reading config file", "Please ensure the config file exists")
200200
}
201201
return nil
202202
}
@@ -207,7 +207,7 @@ func GetCurrentHarborConfig() (*HarborConfig, error) {
207207
})
208208

209209
if configInitError != nil {
210-
return nil, fmt.Errorf("initialization error: %w", configInitError)
210+
return nil, errors.NewWithCause(configInitError, "initialization error")
211211
}
212212

213213
configMutex.RLock()
@@ -267,7 +267,7 @@ func GetCurrentHarborData() (*HarborData, error) {
267267
})
268268

269269
if configInitError != nil {
270-
return nil, fmt.Errorf("initialization error: %w", configInitError)
270+
return nil, errors.NewWithCause(configInitError, "initialization error")
271271
}
272272

273273
configMutex.RLock()
@@ -320,7 +320,7 @@ func ReadDataFile(dataFilePath string) (HarborData, error) {
320320
v.SetConfigFile(dataFilePath)
321321

322322
if err := v.ReadInConfig(); err != nil {
323-
return dataFile, fmt.Errorf("failed to read data file: %v", err)
323+
return dataFile, errors.NewWithCause(err, "failed to read data file")
324324
}
325325

326326
dataFile.ConfigPath = v.GetString("configPath")
@@ -334,19 +334,19 @@ func ApplyDataFile(harborDataPath, harborConfigPath string) error {
334334
if err == nil {
335335
if dataFileContent.ConfigPath != harborConfigPath {
336336
if err := UpdateDataFile(harborDataPath, harborConfigPath); err != nil {
337-
return fmt.Errorf("failed to update data file: %w", err)
337+
return errors.NewWithCause(err, "failed to update data file")
338338
}
339339
} else if dataFileContent.ConfigPath == "" {
340340
if err := CreateDataFile(harborDataPath, harborConfigPath); err != nil {
341-
return fmt.Errorf("failed to create data file: %w", err)
341+
return errors.NewWithCause(err, "failed to create data file")
342342
}
343343
} else {
344344
log.Debugf("Data file already exists with the same config path: %s", harborConfigPath)
345345
}
346346
} else {
347347
// Data file does not exist, create it
348348
if err := CreateDataFile(harborDataPath, harborConfigPath); err != nil {
349-
return fmt.Errorf("failed to create data file: %w", err)
349+
return errors.NewWithCause(err, "failed to create data file")
350350
}
351351
}
352352
return nil
@@ -459,7 +459,7 @@ func UpdateConfigFile(config *HarborConfig) error {
459459
func GetCredentials(credentialName string) (Credential, error) {
460460
currentConfig, err := GetCurrentHarborConfig()
461461
if err != nil {
462-
return Credential{}, fmt.Errorf("failed to get current Harbor configuration: %w", err)
462+
return Credential{}, errors.AsError(err).WithMessage("failed to get current Harbor configuration")
463463
}
464464

465465
if currentConfig == nil || currentConfig.Credentials == nil {
@@ -472,7 +472,7 @@ func GetCredentials(credentialName string) (Credential, error) {
472472
}
473473
}
474474

475-
return Credential{}, fmt.Errorf("credential with name '%s' not found", credentialName)
475+
return Credential{}, errors.Newf("credential with name '%s' not found", credentialName)
476476
}
477477

478478
func AddCredentialsToConfigFile(credential Credential, configPath string) error {

0 commit comments

Comments
 (0)