diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-08-30 22:49:12 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-08-30 22:49:12 +0900 |
| commit | f5abce9df5727904a1daa246025a87c4bfe62553 (patch) | |
| tree | 7e8c29b83e97532954dee8adb5f86962eaebca34 /system/mkdir.go | |
| parent | ddb003e39b64c2417cabc291383d99b4ad64ac8f (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.go | 19 |
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 |
