aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/pkg.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/pkg/pkg.go')
-rw-r--r--internal/pkg/pkg.go36
1 files changed, 21 insertions, 15 deletions
diff --git a/internal/pkg/pkg.go b/internal/pkg/pkg.go
index e90bb72c..7b4c9637 100644
--- a/internal/pkg/pkg.go
+++ b/internal/pkg/pkg.go
@@ -238,8 +238,8 @@ func (t *TContext) destroy(errP *error) {
if chmodErr != nil || removeErr != nil {
*errP = errors.Join(*errP, chmodErr, removeErr)
} else if errors.Is(*errP, os.ErrExist) {
- var linkError *os.LinkError
- if errors.As(*errP, &linkError) && linkError != nil &&
+ if linkError, ok := errors.AsType[*os.LinkError](*errP); ok &&
+ linkError != nil &&
linkError.Op == "rename" {
// two artifacts may be backed by the same file
*errP = nil
@@ -974,36 +974,42 @@ func (e *ScrubError) Unwrap() []error {
// Error returns a multi-line representation of [ScrubError].
func (e *ScrubError) Error() string {
var segments []string
+ var buf strings.Builder
+
if len(e.ChecksumMismatches) > 0 {
- s := "checksum mismatches:\n"
+ buf.Reset()
+ buf.WriteString("checksum mismatches:\n")
for _, m := range e.ChecksumMismatches {
- s += m.Error() + "\n"
+ buf.WriteString(m.Error() + "\n")
}
- segments = append(segments, s)
+ segments = append(segments, buf.String())
}
if len(e.DanglingIdentifiers) > 0 {
- s := "dangling identifiers:\n"
+ buf.Reset()
+ buf.WriteString("dangling identifiers:\n")
for _, id := range e.DanglingIdentifiers {
- s += Encode(id) + "\n"
+ buf.WriteString(Encode(id) + "\n")
}
- segments = append(segments, s)
+ segments = append(segments, buf.String())
}
if len(e.DanglingStatus) > 0 {
- s := "dangling status:\n"
+ buf.Reset()
+ buf.WriteString("dangling status:\n")
for _, id := range e.DanglingStatus {
- s += Encode(id) + "\n"
+ buf.WriteString(Encode(id) + "\n")
}
- segments = append(segments, s)
+ segments = append(segments, buf.String())
}
if len(e.Errs) > 0 {
- s := "errors during scrub:\n"
+ buf.Reset()
+ buf.WriteString("errors during scrub:\n")
for pathname, errs := range e.errs {
- s += " " + pathname.Value() + ":\n"
+ buf.WriteString(" " + pathname.Value() + ":\n")
for _, err := range errs {
- s += " " + err.Error() + "\n"
+ buf.WriteString(" " + err.Error() + "\n")
}
}
- segments = append(segments, s)
+ segments = append(segments, buf.String())
}
return strings.Join(segments, "\n")
}