aboutsummaryrefslogtreecommitdiffhomepage
path: root/system/mkdir.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-30 22:49:12 +0900
committerOphestra <cat@gensokyo.uk>2025-08-30 22:49:12 +0900
commitf5abce9df5727904a1daa246025a87c4bfe62553 (patch)
tree7e8c29b83e97532954dee8adb5f86962eaebca34 /system/mkdir.go
parentddb003e39b64c2417cabc291383d99b4ad64ac8f (diff)
system: wrap op errors
This passes more information allowing for better error handling. This eliminates generic WrapErr from system. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'system/mkdir.go')
-rw-r--r--system/mkdir.go19
1 files changed, 9 insertions, 10 deletions
diff --git a/system/mkdir.go b/system/mkdir.go
index 6e7a55f4..51fc2744 100644
--- a/system/mkdir.go
+++ b/system/mkdir.go
@@ -41,15 +41,15 @@ func (m *Mkdir) apply(*I) error {
msg.Verbose("ensuring directory", m)
// create directory
- err := os.Mkdir(m.path, m.perm)
- if !errors.Is(err, os.ErrExist) {
- return wrapErrSuffix(err,
- fmt.Sprintf("cannot create directory %q:", m.path))
+ if err := os.Mkdir(m.path, m.perm); err != nil {
+ if !errors.Is(err, os.ErrExist) {
+ return newOpError("mkdir", err, false)
+ }
+ // directory exists, ensure mode
+ return newOpError("mkdir", os.Chmod(m.path, m.perm), false)
+ } else {
+ return nil
}
-
- // directory exists, ensure mode
- return wrapErrSuffix(os.Chmod(m.path, m.perm),
- fmt.Sprintf("cannot change mode of %q to %s:", m.path, m.perm))
}
func (m *Mkdir) revert(_ *I, ec *Criteria) error {
@@ -60,8 +60,7 @@ func (m *Mkdir) revert(_ *I, ec *Criteria) error {
if ec.hasType(m) {
msg.Verbose("destroying ephemeral directory", m)
- return wrapErrSuffix(os.Remove(m.path),
- fmt.Sprintf("cannot remove ephemeral directory %q:", m.path))
+ return newOpError("mkdir", os.Remove(m.path), true)
} else {
msg.Verbose("skipping ephemeral directory", m)
return nil