mirror of
https://github.com/kairos-io/kairos-sdk.git
synced 2025-07-20 10:09:29 +00:00
29 lines
676 B
Go
29 lines
676 B
Go
|
package utils
|
||
|
|
||
|
import (
|
||
|
sdkTypes "github.com/kairos-io/kairos-sdk/types"
|
||
|
"github.com/twpayne/go-vfs/v4"
|
||
|
"os"
|
||
|
"syscall"
|
||
|
)
|
||
|
|
||
|
// permError returns an *os.PathError with Err syscall.EPERM.
|
||
|
func permError(op, path string) error {
|
||
|
return &os.PathError{
|
||
|
Op: op,
|
||
|
Path: path,
|
||
|
Err: syscall.EPERM,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// MkdirAll directory and all parents if not existing
|
||
|
func MkdirAll(fs sdkTypes.KairosFS, name string, mode os.FileMode) (err error) {
|
||
|
if _, isReadOnly := fs.(*vfs.ReadOnlyFS); isReadOnly {
|
||
|
return permError("mkdir", name)
|
||
|
}
|
||
|
if name, err = fs.RawPath(name); err != nil {
|
||
|
return &os.PathError{Op: "mkdir", Path: name, Err: err}
|
||
|
}
|
||
|
return os.MkdirAll(name, mode)
|
||
|
}
|