diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-01-15 10:57:10 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-01-15 13:07:06 +0900 |
| commit | 3e11ce6868182f1a3f74d5bf6c1db761097666fa (patch) | |
| tree | 85c611acc2aadb5b5b7818ad5a6a0769a6d71fa4 /helper/bwrap/config.go | |
| parent | 562f5ed7971603a4e4e3315a7fe4188153bfc205 (diff) | |
helper/bwrap: separate sequential/static args
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'helper/bwrap/config.go')
| -rw-r--r-- | helper/bwrap/config.go | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/helper/bwrap/config.go b/helper/bwrap/config.go index c1ab37ca..6ca67793 100644 --- a/helper/bwrap/config.go +++ b/helper/bwrap/config.go @@ -1,17 +1,9 @@ package bwrap import ( - "encoding/gob" "os" - "strconv" ) -func init() { - gob.Register(new(PermConfig[SymlinkConfig])) - gob.Register(new(PermConfig[*TmpfsConfig])) - gob.Register(new(OverlayConfig)) -} - type Config struct { // unshare every namespace we support by default if nil // (--unshare-all) @@ -124,153 +116,3 @@ type UnshareConfig struct { // create new cgroup namespace CGroup bool `json:"cgroup"` } - -type PermConfig[T FSBuilder] struct { - // set permissions of next argument - // (--perms OCTAL) - Mode *os.FileMode `json:"mode,omitempty"` - // path to get the new permission - // (--bind-data, --file, etc.) - Inner T `json:"path"` -} - -func (p *PermConfig[T]) Path() string { - return p.Inner.Path() -} - -func (p *PermConfig[T]) Len() int { - if p.Mode != nil { - return p.Inner.Len() + 2 - } else { - return p.Inner.Len() - } -} - -func (p *PermConfig[T]) Append(args *[]string) { - if p.Mode != nil { - *args = append(*args, intArgs[Perms], strconv.FormatInt(int64(*p.Mode), 8)) - } - p.Inner.Append(args) -} - -type TmpfsConfig struct { - // set size of tmpfs - // (--size BYTES) - Size int `json:"size,omitempty"` - // mount point of new tmpfs - // (--tmpfs DEST) - Dir string `json:"dir"` -} - -func (t *TmpfsConfig) Path() string { - return t.Dir -} - -func (t *TmpfsConfig) Len() int { - if t.Size > 0 { - return 4 - } else { - return 2 - } -} - -func (t *TmpfsConfig) Append(args *[]string) { - if t.Size > 0 { - *args = append(*args, intArgs[Size], strconv.Itoa(t.Size)) - } - *args = append(*args, awkwardArgs[Tmpfs], t.Dir) -} - -type OverlayConfig struct { - /* - read files from SRC in the following overlay - (--overlay-src SRC) - */ - Src []string `json:"src,omitempty"` - - /* - mount overlayfs on DEST, with RWSRC as the host path for writes and - WORKDIR an empty directory on the same filesystem as RWSRC - (--overlay RWSRC WORKDIR DEST) - - if nil, mount overlayfs on DEST, with writes going to an invisible tmpfs - (--tmp-overlay DEST) - - if either strings are empty, mount overlayfs read-only on DEST - (--ro-overlay DEST) - */ - Persist *[2]string `json:"persist,omitempty"` - - /* - --overlay RWSRC WORKDIR DEST - - --tmp-overlay DEST - - --ro-overlay DEST - */ - Dest string `json:"dest"` -} - -func (o *OverlayConfig) Path() string { - return o.Dest -} - -func (o *OverlayConfig) Len() int { - // (--tmp-overlay DEST) or (--ro-overlay DEST) - p := 2 - // (--overlay RWSRC WORKDIR DEST) - if o.Persist != nil && o.Persist[0] != "" && o.Persist[1] != "" { - p = 4 - } - - return p + len(o.Src)*2 -} - -func (o *OverlayConfig) Append(args *[]string) { - // --overlay-src SRC - for _, src := range o.Src { - *args = append(*args, awkwardArgs[OverlaySrc], src) - } - - if o.Persist != nil { - if o.Persist[0] != "" && o.Persist[1] != "" { - // --overlay RWSRC WORKDIR - *args = append(*args, awkwardArgs[Overlay], o.Persist[0], o.Persist[1]) - } else { - // --ro-overlay - *args = append(*args, awkwardArgs[ROOverlay]) - } - } else { - // --tmp-overlay - *args = append(*args, awkwardArgs[TmpOverlay]) - } - - // DEST - *args = append(*args, o.Dest) -} - -type SymlinkConfig [2]string - -func (s SymlinkConfig) Path() string { - return s[1] -} - -func (s SymlinkConfig) Len() int { - return 3 -} - -func (s SymlinkConfig) Append(args *[]string) { - *args = append(*args, awkwardArgs[Symlink], s[0], s[1]) -} - -type ChmodConfig map[string]os.FileMode - -func (c ChmodConfig) Len() int { - return len(c) -} - -func (c ChmodConfig) Append(args *[]string) { - for path, mode := range c { - *args = append(*args, pairArgs[Chmod], strconv.FormatInt(int64(mode), 8), path) - } -} |
