aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-06-08 07:00:01 +0000
committerGravatar Runxi Yu2026-06-08 07:00:01 +0000
commitb8179d74182932d0e6db149b5d012dfd79866cc3 (patch)
tree20a04e7029a2658037d5440f45e043ed843d9db5
parentREFACTOR: Done with object/stored (diff)
errs: Add
-rw-r--r--errs/doc.go2
-rw-r--r--errs/missing.go25
-rw-r--r--errs/type.go24
3 files changed, 51 insertions, 0 deletions
diff --git a/errs/doc.go b/errs/doc.go
new file mode 100644
index 00000000..f9891334
--- /dev/null
+++ b/errs/doc.go
@@ -0,0 +1,2 @@
+// Package errs defines error types shared across furgit.
+package errs
diff --git a/errs/missing.go b/errs/missing.go
new file mode 100644
index 00000000..0630846c
--- /dev/null
+++ b/errs/missing.go
@@ -0,0 +1,25 @@
+package errs
+
+import (
+ "fmt"
+
+ "lindenii.org/go/furgit/object/id"
+)
+
+// ObjectMissingError indicates that
+// a referenced object is absent from the repository object store.
+//
+// This should only be used
+// in situations where objects are being queried recursively
+// or otherwise by some chain that the caller may not be aware of.
+//
+// Failures on direct object access
+// should instead use [lindenii.org/go/furgit/object/store.ErrObjectNotFound].
+type ObjectMissingError struct {
+ OID id.ObjectID
+}
+
+// Error implements error.
+func (e *ObjectMissingError) Error() string {
+ return fmt.Sprintf("missing object %s", e.OID)
+}
diff --git a/errs/type.go b/errs/type.go
new file mode 100644
index 00000000..f726e89b
--- /dev/null
+++ b/errs/type.go
@@ -0,0 +1,24 @@
+package errs
+
+import (
+ "fmt"
+
+ "lindenii.org/go/furgit/object/id"
+ "lindenii.org/go/furgit/object/typ"
+)
+
+// ObjectTypeError indicates that a referenced object
+// has a different type than what the operation expected.
+type ObjectTypeError struct {
+ OID id.ObjectID
+ Got typ.Type
+ Want typ.Type
+}
+
+// Error implements error.
+func (e *ObjectTypeError) Error() string {
+ return fmt.Sprintf(
+ "object %s has type %s, want %s",
+ e.OID, e.Got.Name(), e.Want.Name(),
+ )
+}