diff options
Diffstat (limited to 'internal/cli')
| -rw-r--r-- | internal/cli/cli.go | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/internal/cli/cli.go b/internal/cli/cli.go index f88a623..aa4268a 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -92,11 +92,8 @@ func (a *App) Run() error { cfg.Profile = "default" } + // If we are already isolated, we enter the execution phase. if namespace.IsIsolated() { - // Inject runtime base dir if provided - if a.RuntimeBaseDir != "" { - namespace.SetRuntimeBaseDir(a.RuntimeBaseDir) - } return a.ExecuteCommand(cfg) } @@ -118,17 +115,25 @@ func (a *App) ExecuteCommand(cfg *config.Config) error { } // 1. Prepare the namespace - namespace.PruneStalePids(cfg.Profile) - if err := namespace.RegisterProcess(cfg.Profile); err != nil { + baseDir := a.RuntimeBaseDir + if baseDir == "" { + // Use XDG_RUNTIME_DIR or default via the namespace package + // Since the namespace package now handles the default in GetProfileNamespacePath, + // we can pass empty string if no override is present. + baseDir = "" + } + + namespace.PruneStalePids(baseDir, cfg.Profile) + if err := namespace.RegisterProcess(baseDir, cfg.Profile); err != nil { return fmt.Errorf("failed to register process: %w", err) } // Ensure we unregister and check for cleanup on exit defer func() { - namespace.UnregisterProcess(cfg.Profile) - if last, err := namespace.IsLastProcess(cfg.Profile); err == nil && last { + namespace.UnregisterProcess(baseDir, cfg.Profile) + if last, err := namespace.IsLastProcess(baseDir, cfg.Profile); err == nil && last { fmt.Printf("Last process exiting. Cleaning up profile %s...\n", cfg.Profile) - // Here we would call namespace.UnpinNamespace(cfg.Profile) + // Here we would call namespace.UnpinNamespace(baseDir, cfg.Profile) // and terminate the userspace WG process. } }() |
