Fixed TODO in document/repo package

Implemented strongly-typed errors for document/repo

Change-Id: I572489b4c48ff4cd75a4e2f9a6b1d27ad1f840dd
This commit is contained in:
Stanislav Egorov
2020-08-28 12:24:24 -07:00
parent 61633d30fc
commit 61ed8d30b7
2 changed files with 39 additions and 12 deletions

View File

@@ -15,7 +15,6 @@
package repo
import (
"errors"
"fmt"
"path/filepath"
@@ -32,14 +31,6 @@ import (
"opendev.org/airship/airshipctl/pkg/util"
)
//TODO(sy495p): Switch to strongly-typed errors in this file
// variables for repository errors
var (
ErrNoOpenRepo = errors.New("no open repository is stored")
ErrCantParseURL = errors.New("could not get target directory from url")
)
// OptionsBuilder interface provides specification for a repository implementation
type OptionsBuilder interface {
ToAuth() (transport.AuthMethod, error)
@@ -62,7 +53,7 @@ type Repository struct {
func NewRepository(basePath string, builder OptionsBuilder) (*Repository, error) {
dirName := util.GitDirNameFromURL(builder.URL())
if dirName == "" {
return nil, fmt.Errorf("URL: %s, original error: %w", builder.URL(), ErrCantParseURL)
return nil, ErrParseURL{URL: builder.URL()}
}
fs := osfs.New(filepath.Join(basePath, dirName))
@@ -91,7 +82,7 @@ func storerFromFs(fs billy.Filesystem) (storage.Storer, error) {
func (repo *Repository) Update(force bool) error {
log.Debugf("Updating repository %s", repo.Name)
if !repo.Driver.IsOpen() {
return ErrNoOpenRepo
return ErrNoOpenRepo{}
}
auth, err := repo.ToAuth()
if err != nil {
@@ -107,7 +98,7 @@ func (repo *Repository) Update(force bool) error {
// Checkout git repository, ToCheckoutOptions method will be used go get CheckoutOptions
func (repo *Repository) Checkout(enforce bool) error {
if !repo.Driver.IsOpen() {
return ErrNoOpenRepo
return ErrNoOpenRepo{}
}
co := repo.ToCheckoutOptions(enforce)
var branchHash string