package cli import ( "context" "flag" "fmt" "github.com/davis7dotsh/tx9/internal/box" "github.com/davis7dotsh/tx9/internal/docker" ) // cmdStart implements `tx9 start `: start both containers together. // Volumes persist. func cmdStart(args []string) error { fs := flag.NewFlagSet("start", flag.ContinueOnError) if err := parseFlagsAnywhere(fs, args); err != nil { return err } name, err := requireBoxName(fs, "start") if err != nil { return err } return withBoxLock(name, func(ctx context.Context, cli *docker.Client) error { b, err := box.Get(ctx, cli, name) if err != nil { return fmt.Errorf("start %s: %w", name, err) } if err := box.Start(ctx, cli, b); err != nil { return fmt.Errorf("start %s: %w", name, err) } fmt.Printf("tx9: box %s started\n", name) return nil }) } // cmdStop implements `tx9 stop `: stop both containers together. // Volumes persist. func cmdStop(args []string) error { fs := flag.NewFlagSet("stop", flag.ContinueOnError) if err := parseFlagsAnywhere(fs, args); err != nil { return err } name, err := requireBoxName(fs, "stop") if err != nil { return err } return withBoxLock(name, func(ctx context.Context, cli *docker.Client) error { b, err := box.Get(ctx, cli, name) if err != nil { return fmt.Errorf("stop %s: %w", name, err) } if err := box.Stop(ctx, cli, b); err != nil { return fmt.Errorf("stop %s: %w", name, err) } fmt.Printf("tx9: box %s stopped\n", name) return nil }) }