summaryrefslogtreecommitdiff
path: root/internal/cli
diff options
context:
space:
mode:
authorJames O'Doherty <james@theodohertyfamily.com>2026-05-22 11:20:24 -0400
committerJames O'Doherty <james@theodohertyfamily.com>2026-05-22 11:20:24 -0400
commit079e4240534cbdc8751f1a127def20f2d1e58da6 (patch)
tree3765ab0df3be656eac664a216158ef409e29e6e5 /internal/cli
parent3b56ccecf46b83fa9b0e4b6c54be6ffda395910c (diff)
Refactor lifecycle to support XDG_RUNTIME_DIR and fix binary pathing in E2E tests
Diffstat (limited to 'internal/cli')
-rw-r--r--internal/cli/cli.go23
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.
}
}()