aboutsummaryrefslogtreecommitdiffhomepage
path: root/helper/container.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-11-12 23:12:38 +0900
committerOphestra <cat@gensokyo.uk>2025-11-12 23:16:13 +0900
commitf347d44c2281f507e3786aa498f634bfa4c92d84 (patch)
treefe85b41d5f6a5e308b87585f46efd64f90221e2b /helper/container.go
parentb5630f6883c874d458d9ae3c666cfb7ae5e3121d (diff)
internal/helper: relocate from helper
This package is ugly and is pending removal only kept alive by xdg-dbus-proxy. Its exported symbols are made available until v0.4.0 where it will be removed for #24. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'helper/container.go')
-rw-r--r--helper/container.go79
1 files changed, 0 insertions, 79 deletions
diff --git a/helper/container.go b/helper/container.go
deleted file mode 100644
index b85f5859..00000000
--- a/helper/container.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package helper
-
-import (
- "context"
- "errors"
- "io"
- "os"
- "os/exec"
- "slices"
- "sync"
-
- "hakurei.app/container"
- "hakurei.app/container/check"
- "hakurei.app/helper/proc"
- "hakurei.app/message"
-)
-
-// New initialises a Helper instance with wt as the null-terminated argument writer.
-func New(
- ctx context.Context,
- msg message.Msg,
- pathname *check.Absolute, name string,
- wt io.WriterTo,
- stat bool,
- argF func(argsFd, statFd int) []string,
- cmdF func(z *container.Container),
- extraFiles []*os.File,
-) Helper {
- var args []string
- h := new(helperContainer)
- h.helperFiles, args = newHelperFiles(ctx, wt, stat, argF, extraFiles)
- h.Container = container.NewCommand(ctx, msg, pathname, name, args...)
- h.WaitDelay = WaitDelay
- if cmdF != nil {
- cmdF(h.Container)
- }
- return h
-}
-
-// helperContainer provides a [sandbox.Container] wrapper around helper ipc.
-type helperContainer struct {
- started bool
-
- mu sync.Mutex
- *helperFiles
- *container.Container
-}
-
-func (h *helperContainer) Start() error {
- h.mu.Lock()
- defer h.mu.Unlock()
-
- if h.started {
- return errors.New("helper: already started")
- }
- h.started = true
-
- h.Env = slices.Grow(h.Env, 2)
- if h.useArgsFd {
- h.Env = append(h.Env, HakureiHelper+"=1")
- } else {
- h.Env = append(h.Env, HakureiHelper+"=0")
- }
- if h.useStatFd {
- h.Env = append(h.Env, HakureiStatus+"=1")
-
- // stat is populated on fulfill
- h.Cancel = func(*exec.Cmd) error { return h.stat.Close() }
- } else {
- h.Env = append(h.Env, HakureiStatus+"=0")
- }
-
- return proc.Fulfill(h.helperFiles.ctx, &h.ExtraFiles, func() error {
- if err := h.Container.Start(); err != nil {
- return err
- }
- return h.Container.Serve()
- }, h.files, h.extraFiles)
-}