aboutsummaryrefslogtreecommitdiffhomepage
path: root/helper/bwrap/config.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-01-15 10:57:10 +0900
committerOphestra <cat@gensokyo.uk>2025-01-15 13:07:06 +0900
commit3e11ce6868182f1a3f74d5bf6c1db761097666fa (patch)
tree85c611acc2aadb5b5b7818ad5a6a0769a6d71fa4 /helper/bwrap/config.go
parent562f5ed7971603a4e4e3315a7fe4188153bfc205 (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.go158
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)
- }
-}