shithub: furgit

ref: df1f2fb3daa1acd25c88510f259d5535fb482126
dir: /ref/store/files/update_resolve_target.go/

View raw version
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)
	}
}