aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/update_resolve_target.go
diff options
context:
space:
mode:
Diffstat (limited to 'refstore/files/update_resolve_target.go')
-rw-r--r--refstore/files/update_resolve_target.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/refstore/files/update_resolve_target.go b/refstore/files/update_resolve_target.go
new file mode 100644
index 00000000..7cfb9aa1
--- /dev/null
+++ b/refstore/files/update_resolve_target.go
@@ -0,0 +1,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)
+ }
+}