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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
package files
import (
"strings"
"codeberg.org/lindenii/furgit/ref/store"
)
func (executor *refUpdateExecutor) verifyPreparedUpdateCurrent(item preparedUpdate) error {
switch item.op.kind {
case updateCreate:
if item.target.ref.kind != directMissing {
return wrapUpdateError(item.op.name, &refstore.CreateExistsError{})
}
return nil
case updateReplace, updateDelete, updateVerify:
if item.target.ref.kind == directMissing {
return wrapUpdateError(item.op.name, refstore.ErrReferenceNotFound)
}
if item.target.ref.kind != directDetached {
return wrapUpdateError(item.op.name, &refstore.ExpectedDetachedError{})
}
if item.target.ref.id != item.op.oldID {
return wrapUpdateError(item.op.name, &refstore.IncorrectOldValueError{
Actual: item.target.ref.id.String(),
Expected: item.op.oldID.String(),
})
}
return nil
case updateCreateSymbolic:
if item.target.ref.kind != directMissing {
return wrapUpdateError(item.op.name, &refstore.CreateExistsError{})
}
return nil
case updateReplaceSymbolic, updateDeleteSymbolic, updateVerifySymbolic:
if item.target.ref.kind == directMissing {
return wrapUpdateError(item.op.name, refstore.ErrReferenceNotFound)
}
if item.target.ref.kind != directSymbolic {
return wrapUpdateError(item.op.name, &refstore.ExpectedSymbolicError{})
}
if strings.TrimSpace(item.target.ref.target) != strings.TrimSpace(item.op.oldTarget) {
return wrapUpdateError(item.op.name, &refstore.IncorrectOldValueError{
Actual: strings.TrimSpace(item.target.ref.target),
Expected: strings.TrimSpace(item.op.oldTarget),
})
}
return nil
}
return nil
}
|