aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/batch_reject.go
blob: 27715c2d50b1334dc56db1ab8f1cce7911d8758c (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package files

import (
	"errors"
	"strings"

	"codeberg.org/lindenii/furgit/objectid"
	"codeberg.org/lindenii/furgit/ref/refname"
	"codeberg.org/lindenii/furgit/refstore"
)

func isBatchRejected(err error) bool {
	var nameErr *refname.NameError

	if errors.As(err, &nameErr) {
		return true
	}

	if errors.Is(err, objectid.ErrInvalidAlgorithm) || errors.Is(err, refstore.ErrReferenceNotFound) {
		return true
	}

	msg := err.Error()

	return strings.Contains(msg, "empty reference name") ||
		strings.Contains(msg, "empty symbolic target") ||
		strings.Contains(msg, "empty symbolic old target") ||
		strings.Contains(msg, "already exists") ||
		strings.Contains(msg, "is missing") ||
		strings.Contains(msg, "is not detached") ||
		strings.Contains(msg, "is not symbolic") ||
		strings.Contains(msg, "expected") ||
		strings.Contains(msg, "reference name conflict") ||
		strings.Contains(msg, "non-empty directory blocks reference")
}