deps: replace multierr with native errors.Join

Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
This commit is contained in:
Paul Meyer 2023-02-07 12:56:25 +01:00
parent 955316c661
commit 12c866bcb9
32 changed files with 173 additions and 159 deletions

View file

@ -29,7 +29,6 @@ import (
verclient "github.com/edgelesssys/constellation/v2/internal/versionsapi/client"
gaxv2 "github.com/googleapis/gax-go/v2"
"github.com/spf13/cobra"
"go.uber.org/multierr"
"go.uber.org/zap/zapcore"
)
@ -141,12 +140,12 @@ func deleteSingleVersion(ctx context.Context, clients rmImageClients, ver versio
log.Debugf("Deleting images for %s", ver.Version)
if err := deleteImage(ctx, clients, ver, dryrun, log); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting images: %w", err))
retErr = errors.Join(retErr, fmt.Errorf("deleting images: %w", err))
}
log.Debugf("Deleting version %s from versions API", ver.Version)
if err := clients.version.DeleteVersion(ctx, ver); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting version from versions API: %w", err))
retErr = errors.Join(retErr, fmt.Errorf("deleting version from versions API: %w", err))
}
return retErr
@ -182,13 +181,13 @@ func deleteRef(ctx context.Context, clients rmImageClients, ref string, dryrun b
for _, ver := range vers {
if err := deleteImage(ctx, clients, ver, dryrun, log); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting images for version %s: %w", ver.Version, err))
retErr = errors.Join(retErr, fmt.Errorf("deleting images for version %s: %w", ver.Version, err))
}
}
log.Infof("Deleting ref %s from versions API", ref)
if err := clients.version.DeleteRef(ctx, ref); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting ref from versions API: %w", err))
retErr = errors.Join(retErr, fmt.Errorf("deleting ref from versions API: %w", err))
}
return retErr
@ -215,21 +214,21 @@ func deleteImage(ctx context.Context, clients rmImageClients, ver versionsapi.Ve
log.Infof("Deleting AWS images from %s", imageInfo.JSONPath())
for awsRegion, awsImage := range imageInfo.AWS {
if err := clients.aws.deleteImage(ctx, awsImage, awsRegion, dryrun, log); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting AWS image %s: %w", awsImage, err))
retErr = errors.Join(retErr, fmt.Errorf("deleting AWS image %s: %w", awsImage, err))
}
}
log.Infof("Deleting GCP images from %s", imageInfo.JSONPath())
for _, gcpImage := range imageInfo.GCP {
if err := clients.gcp.deleteImage(ctx, gcpImage, dryrun, log); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting GCP image %s: %w", gcpImage, err))
retErr = errors.Join(retErr, fmt.Errorf("deleting GCP image %s: %w", gcpImage, err))
}
}
log.Infof("Deleting Azure images from %s", imageInfo.JSONPath())
for _, azImage := range imageInfo.Azure {
if err := clients.az.deleteImage(ctx, azImage, dryrun, log); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting Azure image %s: %w", azImage, err))
retErr = errors.Join(retErr, fmt.Errorf("deleting Azure image %s: %w", azImage, err))
}
}

View file

@ -43,7 +43,6 @@ import (
"github.com/edgelesssys/constellation/v2/internal/constants"
"github.com/edgelesssys/constellation/v2/internal/logger"
"github.com/edgelesssys/constellation/v2/internal/versionsapi"
"go.uber.org/multierr"
"golang.org/x/mod/semver"
)
@ -167,17 +166,17 @@ func (c *Client) DeleteVersion(ctx context.Context, ver versionsapi.Version) err
c.log.Debugf("Deleting version %s from minor version list", ver.Version)
possibleNewLatest, err := c.deleteVersionFromMinorVersionList(ctx, ver)
if err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("removing from minor version list: %w", err))
retErr = errors.Join(retErr, fmt.Errorf("removing from minor version list: %w", err))
}
c.log.Debugf("Checking latest version for %s", ver.Version)
if err := c.deleteVersionFromLatest(ctx, ver, possibleNewLatest); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("updating latest version: %w", err))
retErr = errors.Join(retErr, fmt.Errorf("updating latest version: %w", err))
}
c.log.Debugf("Deleting artifact path %s for %s", ver.ArtifactPath(), ver.Version)
if err := c.deletePath(ctx, ver.ArtifactPath()); err != nil {
retErr = multierr.Append(retErr, fmt.Errorf("deleting artifact path: %w", err))
retErr = errors.Join(retErr, fmt.Errorf("deleting artifact path: %w", err))
}
return retErr

View file

@ -13,7 +13,6 @@ import (
"path"
"github.com/edgelesssys/constellation/v2/internal/constants"
"go.uber.org/multierr"
"golang.org/x/mod/semver"
)
@ -62,25 +61,25 @@ func (i ImageInfo) URL() (string, error) {
func (i ImageInfo) ValidateRequest() error {
var retErr error
if err := ValidateRef(i.Ref); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if err := ValidateStream(i.Ref, i.Stream); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if !semver.IsValid(i.Version) {
retErr = multierr.Append(retErr, fmt.Errorf("version %q is not a valid semver", i.Version))
retErr = errors.Join(retErr, fmt.Errorf("version %q is not a valid semver", i.Version))
}
if len(i.AWS) != 0 {
retErr = multierr.Append(retErr, errors.New("AWS map must be empty for request"))
retErr = errors.Join(retErr, errors.New("AWS map must be empty for request"))
}
if len(i.Azure) != 0 {
retErr = multierr.Append(retErr, errors.New("Azure map must be empty for request"))
retErr = errors.Join(retErr, errors.New("Azure map must be empty for request"))
}
if len(i.GCP) != 0 {
retErr = multierr.Append(retErr, errors.New("GCP map must be empty for request"))
retErr = errors.Join(retErr, errors.New("GCP map must be empty for request"))
}
if len(i.QEMU) != 0 {
retErr = multierr.Append(retErr, errors.New("QEMU map must be empty for request"))
retErr = errors.Join(retErr, errors.New("QEMU map must be empty for request"))
}
return retErr
@ -90,25 +89,25 @@ func (i ImageInfo) ValidateRequest() error {
func (i ImageInfo) Validate() error {
var retErr error
if err := ValidateRef(i.Ref); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if err := ValidateStream(i.Ref, i.Stream); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if !semver.IsValid(i.Version) {
retErr = multierr.Append(retErr, fmt.Errorf("version %q is not a valid semver", i.Version))
retErr = errors.Join(retErr, fmt.Errorf("version %q is not a valid semver", i.Version))
}
if len(i.AWS) == 0 {
retErr = multierr.Append(retErr, errors.New("AWS map must not be empty"))
retErr = errors.Join(retErr, errors.New("AWS map must not be empty"))
}
if len(i.Azure) == 0 {
retErr = multierr.Append(retErr, errors.New("Azure map must not be empty"))
retErr = errors.Join(retErr, errors.New("Azure map must not be empty"))
}
if len(i.GCP) == 0 {
retErr = multierr.Append(retErr, errors.New("GCP map must not be empty"))
retErr = errors.Join(retErr, errors.New("GCP map must not be empty"))
}
if len(i.QEMU) == 0 {
retErr = multierr.Append(retErr, errors.New("QEMU map must not be empty"))
retErr = errors.Join(retErr, errors.New("QEMU map must not be empty"))
}
return retErr

View file

@ -7,12 +7,12 @@ SPDX-License-Identifier: AGPL-3.0-only
package versionsapi
import (
"errors"
"fmt"
"net/url"
"path"
"github.com/edgelesssys/constellation/v2/internal/constants"
"go.uber.org/multierr"
"golang.org/x/mod/semver"
)
@ -54,16 +54,16 @@ func (l Latest) URL() (string, error) {
func (l Latest) Validate() error {
var retErr error
if err := ValidateRef(l.Ref); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if err := ValidateStream(l.Ref, l.Stream); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if l.Kind == VersionKindUnknown {
retErr = multierr.Append(retErr, fmt.Errorf("version of kind %q is not supported", l.Kind))
retErr = errors.Join(retErr, fmt.Errorf("version of kind %q is not supported", l.Kind))
}
if !semver.IsValid(l.Version) {
retErr = multierr.Append(retErr, fmt.Errorf("version %q is not a valid semver", l.Version))
retErr = errors.Join(retErr, fmt.Errorf("version %q is not a valid semver", l.Version))
}
return retErr
@ -73,16 +73,16 @@ func (l Latest) Validate() error {
func (l Latest) ValidateRequest() error {
var retErr error
if err := ValidateRef(l.Ref); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if err := ValidateStream(l.Ref, l.Stream); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if l.Kind == VersionKindUnknown {
retErr = multierr.Append(retErr, fmt.Errorf("version of kind %q is not supported", l.Kind))
retErr = errors.Join(retErr, fmt.Errorf("version of kind %q is not supported", l.Kind))
}
if l.Version != "" {
retErr = multierr.Append(retErr, fmt.Errorf("version %q must be empty for request", l.Version))
retErr = errors.Join(retErr, fmt.Errorf("version %q must be empty for request", l.Version))
}
return retErr
}

View file

@ -7,12 +7,12 @@ SPDX-License-Identifier: AGPL-3.0-only
package versionsapi
import (
"errors"
"fmt"
"net/url"
"path"
"github.com/edgelesssys/constellation/v2/internal/constants"
"go.uber.org/multierr"
"golang.org/x/mod/semver"
)
@ -66,19 +66,19 @@ func (l List) URL() (string, error) {
func (l List) ValidateRequest() error {
var retErr error
if err := ValidateRef(l.Ref); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if err := ValidateStream(l.Ref, l.Stream); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if l.Granularity != GranularityMajor && l.Granularity != GranularityMinor {
retErr = multierr.Append(retErr, fmt.Errorf("granularity %q is not supported", l.Granularity))
retErr = errors.Join(retErr, fmt.Errorf("granularity %q is not supported", l.Granularity))
}
if l.Kind != VersionKindImage {
retErr = multierr.Append(retErr, fmt.Errorf("kind %q is not supported", l.Kind))
retErr = errors.Join(retErr, fmt.Errorf("kind %q is not supported", l.Kind))
}
if !semver.IsValid(l.Base) {
retErr = multierr.Append(retErr, fmt.Errorf("base version %q is not a valid semantic version", l.Base))
retErr = errors.Join(retErr, fmt.Errorf("base version %q is not a valid semantic version", l.Base))
}
var normalizeFunc func(string) string
switch l.Granularity {
@ -90,10 +90,10 @@ func (l List) ValidateRequest() error {
normalizeFunc = func(s string) string { return s }
}
if normalizeFunc(l.Base) != l.Base {
retErr = multierr.Append(retErr, fmt.Errorf("base version %q does not match granularity %q", l.Base, l.Granularity))
retErr = errors.Join(retErr, fmt.Errorf("base version %q does not match granularity %q", l.Base, l.Granularity))
}
if len(l.Versions) != 0 {
retErr = multierr.Append(retErr, fmt.Errorf("versions must be empty for request"))
retErr = errors.Join(retErr, fmt.Errorf("versions must be empty for request"))
}
return retErr
}
@ -109,19 +109,19 @@ func (l List) ValidateRequest() error {
func (l List) Validate() error {
var retErr error
if err := ValidateRef(l.Ref); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if err := ValidateStream(l.Ref, l.Stream); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if l.Granularity != GranularityMajor && l.Granularity != GranularityMinor {
retErr = multierr.Append(retErr, fmt.Errorf("granularity %q is not supported", l.Granularity))
retErr = errors.Join(retErr, fmt.Errorf("granularity %q is not supported", l.Granularity))
}
if l.Kind != VersionKindImage {
retErr = multierr.Append(retErr, fmt.Errorf("kind %q is not supported", l.Kind))
retErr = errors.Join(retErr, fmt.Errorf("kind %q is not supported", l.Kind))
}
if !semver.IsValid(l.Base) {
retErr = multierr.Append(retErr, fmt.Errorf("base version %q is not a valid semantic version", l.Base))
retErr = errors.Join(retErr, fmt.Errorf("base version %q is not a valid semantic version", l.Base))
}
var normalizeFunc func(string) string
switch l.Granularity {
@ -133,14 +133,14 @@ func (l List) Validate() error {
normalizeFunc = func(s string) string { return s }
}
if normalizeFunc(l.Base) != l.Base {
retErr = multierr.Append(retErr, fmt.Errorf("base version %q does not match granularity %q", l.Base, l.Granularity))
retErr = errors.Join(retErr, fmt.Errorf("base version %q does not match granularity %q", l.Base, l.Granularity))
}
for _, ver := range l.Versions {
if !semver.IsValid(ver) {
retErr = multierr.Append(retErr, fmt.Errorf("version %q is not a valid semantic version", ver))
retErr = errors.Join(retErr, fmt.Errorf("version %q is not a valid semantic version", ver))
}
if normalizeFunc(ver) != l.Base || normalizeFunc(ver) == ver {
retErr = multierr.Append(retErr, fmt.Errorf("version %q is not finer-grained than base version %q", ver, l.Base))
retErr = errors.Join(retErr, fmt.Errorf("version %q is not finer-grained than base version %q", ver, l.Base))
}
}

View file

@ -15,7 +15,6 @@ import (
"strings"
"github.com/edgelesssys/constellation/v2/internal/constants"
"go.uber.org/multierr"
"golang.org/x/mod/semver"
)
@ -64,19 +63,19 @@ func (v Version) ShortPath() string {
func (v Version) Validate() error {
var retErr error
if err := ValidateRef(v.Ref); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if err := ValidateStream(v.Ref, v.Stream); err != nil {
retErr = multierr.Append(retErr, err)
retErr = errors.Join(retErr, err)
}
if !semver.IsValid(v.Version) {
retErr = multierr.Append(retErr, fmt.Errorf("version %q is not a valid semantic version", v.Version))
retErr = errors.Join(retErr, fmt.Errorf("version %q is not a valid semantic version", v.Version))
}
if semver.Canonical(v.Version) != v.Version {
retErr = multierr.Append(retErr, fmt.Errorf("version %q is not a canonical semantic version", v.Version))
retErr = errors.Join(retErr, fmt.Errorf("version %q is not a canonical semantic version", v.Version))
}
if v.Kind == VersionKindUnknown {
retErr = multierr.Append(retErr, errors.New("version kind is unknown"))
retErr = errors.Join(retErr, errors.New("version kind is unknown"))
}
return retErr
}