Fixed TODO in document/repo package
Implemented strongly-typed errors for document/repo Change-Id: I572489b4c48ff4cd75a4e2f9a6b1d27ad1f840dd
This commit is contained in:
parent
61633d30fc
commit
61ed8d30b7
36
pkg/document/repo/errors.go
Normal file
36
pkg/document/repo/errors.go
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package repo
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// ErrNoOpenRepo returned if repository is not opened by git driver
|
||||
type ErrNoOpenRepo struct {
|
||||
}
|
||||
|
||||
// ErrParseURL returned if there is error when parsing URL
|
||||
type ErrParseURL struct {
|
||||
URL string
|
||||
}
|
||||
|
||||
func (e ErrNoOpenRepo) Error() string {
|
||||
return fmt.Sprintf("no open repository is stored")
|
||||
}
|
||||
|
||||
func (e ErrParseURL) Error() string {
|
||||
return fmt.Sprintf("could not get target directory from URL: %s", e.URL)
|
||||
}
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user