Files
exec/rootfs.go
2025-08-22 21:00:16 -03:00

35 lines
895 B
Go

package exec
import (
"fmt"
"io"
)
var makeFs = make(map[string]RegisterNewRootfs[Rootfs])
type RegisterNewRootfs[T Rootfs] func(...any) (T, error)
type Rootfs interface {
NewProcess() (Proc, error) // Return new struct to start process
Close() error // Close session
Tar(io.Writer) error // return tar reader file without copression
FromTar(r io.Reader) error // Extract tar to rootfs path
}
// Register new rootfs
func RegisterRootfs[T Rootfs](typeName string, makeProc RegisterNewRootfs[T]) error {
if makeFs == nil {
return fmt.Errorf("cannot append to makeFs register")
}
makeFs[typeName] = func(a ...any) (Rootfs, error) { return makeProc(a...) }
return nil
}
// Return new rootfs struct
func NewRootfs(typeName string, opts ...any) (Rootfs, error) {
if newProc, ok := makeFs[typeName]; ok {
return newProc(opts...)
}
return nil, ErrNoProcFound
}