aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/update_resolve_target.go
blob: 7cfb9aa16ac833c736a041245b0afc3a440e79c0 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package files

import "fmt"

func (executor *refUpdateExecutor) resolveQueuedUpdateTarget(op queuedUpdate) (resolvedUpdateTarget, error) {
	switch op.kind {
	case updateCreate:
		return executor.resolveOrdinaryTarget(op.name, true)
	case updateReplace, updateDelete, updateVerify:
		return executor.resolveOrdinaryTarget(op.name, false)
	case updateCreateSymbolic, updateReplaceSymbolic, updateDeleteSymbolic, updateVerifySymbolic:
		refState, err := executor.directRead(op.name)
		if err != nil {
			return resolvedUpdateTarget{}, err
		}

		return resolvedUpdateTarget{name: op.name, loc: executor.store.loosePath(op.name), ref: refState}, nil
	default:
		return resolvedUpdateTarget{}, fmt.Errorf("refstore/files: unsupported update operation %d", op.kind)
	}
}