mirror of
https://github.com/skoelle/kctl-tui.git
synced 2026-09-17 20:10:24 +00:00
fix: move tool checks before tea.ExecProcess to fix namespace selection
This commit is contained in:
+38
-39
@@ -192,6 +192,14 @@ func (m *fullModel) handleSelect() (tea.Model, tea.Cmd) {
|
|||||||
|
|
||||||
case screenNamespace:
|
case screenNamespace:
|
||||||
m.selectedNamespace = item.value
|
m.selectedNamespace = item.value
|
||||||
|
if err := kubeexec.CheckTool("tmux"); err != nil {
|
||||||
|
m.err = err
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
if err := kubeexec.CheckTool("k9s"); err != nil {
|
||||||
|
m.err = err
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
return m, m.startTmuxSession()
|
return m, m.startTmuxSession()
|
||||||
}
|
}
|
||||||
return m, nil
|
return m, nil
|
||||||
@@ -257,48 +265,39 @@ func (m *fullModel) loadNamespacesFor(teamValue string) tea.Cmd {
|
|||||||
// configured envs, resolved via the context template, so both are
|
// configured envs, resolved via the context template, so both are
|
||||||
// visible side by side.
|
// visible side by side.
|
||||||
func (m *fullModel) startTmuxSession() tea.Cmd {
|
func (m *fullModel) startTmuxSession() tea.Cmd {
|
||||||
return func() tea.Msg {
|
selfPath := "kctl-tui"
|
||||||
if err := kubeexec.CheckTool("tmux"); err != nil {
|
panelCmd := fmt.Sprintf("%s panel --context=%s --ns=%s --team=%s",
|
||||||
return errMsg{err}
|
selfPath, m.selectedContext, m.selectedNamespace, m.selectedTeam)
|
||||||
}
|
|
||||||
if err := kubeexec.CheckTool("k9s"); err != nil {
|
|
||||||
return errMsg{err}
|
|
||||||
}
|
|
||||||
|
|
||||||
selfPath := "kctl-tui" // resolved via PATH; see README for install instructions
|
envA := m.cfg.Envs[0]
|
||||||
panelCmd := fmt.Sprintf("%s panel --context=%s --ns=%s --team=%s",
|
ctxA := m.cfg.ResolveContext(envA, m.selectedContext)
|
||||||
selfPath, m.selectedContext, m.selectedNamespace, m.selectedTeam)
|
k9sCmdA := fmt.Sprintf("k9s --context %s -n %s", ctxA, m.selectedNamespace)
|
||||||
|
|
||||||
envA := m.cfg.Envs[0]
|
args := []string{
|
||||||
ctxA := m.cfg.ResolveContext(envA, m.selectedContext)
|
"new-session", "-d", "-s", "kctl",
|
||||||
k9sCmdA := fmt.Sprintf("k9s --context %s -n %s", ctxA, m.selectedNamespace)
|
panelCmd, ";",
|
||||||
|
"set-option", "-t", "kctl", "remain-on-exit", "on", ";",
|
||||||
args := []string{
|
"split-window", "-v", "-t", "kctl:0.0", k9sCmdA, ";",
|
||||||
"new-session", "-d", "-s", "kctl",
|
|
||||||
panelCmd, ";",
|
|
||||||
"set-option", "-t", "kctl", "remain-on-exit", "on", ";",
|
|
||||||
"split-window", "-v", "-t", "kctl:0.0", k9sCmdA, ";",
|
|
||||||
}
|
|
||||||
if len(m.cfg.Envs) > 1 {
|
|
||||||
envB := m.cfg.Envs[1]
|
|
||||||
ctxB := m.cfg.ResolveContext(envB, m.selectedContext)
|
|
||||||
k9sCmdB := fmt.Sprintf("k9s --context %s -n %s", ctxB, m.selectedNamespace)
|
|
||||||
args = append(args,
|
|
||||||
"split-window", "-v", "-t", "kctl:0.1", k9sCmdB, ";",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
args = append(args,
|
|
||||||
"select-layout", "-t", "kctl", "even-vertical", ";",
|
|
||||||
"select-pane", "-t", "kctl:0.0", ";",
|
|
||||||
"attach", "-t", "kctl",
|
|
||||||
)
|
|
||||||
|
|
||||||
c := exec.Command("tmux", args...)
|
|
||||||
|
|
||||||
return tea.ExecProcess(c, func(err error) tea.Msg {
|
|
||||||
return tmuxDoneMsg{err: err}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
if len(m.cfg.Envs) > 1 {
|
||||||
|
envB := m.cfg.Envs[1]
|
||||||
|
ctxB := m.cfg.ResolveContext(envB, m.selectedContext)
|
||||||
|
k9sCmdB := fmt.Sprintf("k9s --context %s -n %s", ctxB, m.selectedNamespace)
|
||||||
|
args = append(args,
|
||||||
|
"split-window", "-v", "-t", "kctl:0.1", k9sCmdB, ";",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
args = append(args,
|
||||||
|
"select-layout", "-t", "kctl", "even-vertical", ";",
|
||||||
|
"select-pane", "-t", "kctl:0.0", ";",
|
||||||
|
"attach", "-t", "kctl",
|
||||||
|
)
|
||||||
|
|
||||||
|
c := exec.Command("tmux", args...)
|
||||||
|
|
||||||
|
return tea.ExecProcess(c, func(err error) tea.Msg {
|
||||||
|
return tmuxDoneMsg{err: err}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *fullModel) View() string {
|
func (m *fullModel) View() string {
|
||||||
|
|||||||
Reference in New Issue
Block a user