sandbox: create directories
All checks were successful
Test / Create distribution (push) Successful in 24s
Test / Fortify (push) Successful in 2m29s
Test / Fpkg (push) Successful in 3m30s
Test / Data race detector (push) Successful in 4m2s
Test / Flake checks (push) Successful in 48s

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2025-03-17 22:03:06 +09:00
parent 07181138e5
commit 228f3301f2
2 changed files with 31 additions and 2 deletions

View File

@@ -234,3 +234,31 @@ func (f *Ops) Link(target, linkName string) *Ops {
*f = append(*f, &Symlink{target, linkName})
return f
}
func init() { gob.Register(new(Mkdir)) }
// Mkdir creates a directory in the container filesystem.
type Mkdir string
func (m Mkdir) apply(*Params) error {
v := string(m)
if !path.IsAbs(v) {
return msg.WrapErr(syscall.EBADE,
fmt.Sprintf("path %q is not absolute", v))
}
target := toSysroot(v)
if err := os.MkdirAll(target, 0755); err != nil {
return msg.WrapErr(err, err.Error())
}
return nil
}
func (m Mkdir) Is(op Op) bool { vm, ok := op.(Mkdir); return ok && m == vm }
func (Mkdir) prefix() string { return "creating" }
func (m Mkdir) String() string { return fmt.Sprintf("directory %q", string(m)) }
func (f *Ops) Mkdir(dest string) *Ops {
*f = append(*f, Mkdir(dest))
return f
}