resize observer + run an ls command

This commit is contained in:
sawka
2024-05-14 22:37:19 -07:00
parent 35c6b232fc
commit 5b2a5eb5eb
4 changed files with 139 additions and 12 deletions
+14 -2
View File
@@ -15,14 +15,26 @@ import (
"github.com/wavetermdev/thenextwave/pkg/util/shellutil"
)
func RunSimpleCmdInPty(ecmd *exec.Cmd) ([]byte, error) {
type TermSize struct {
Rows int `json:"rows"`
Cols int `json:"cols"`
}
func RunSimpleCmdInPty(ecmd *exec.Cmd, termSize TermSize) ([]byte, error) {
ecmd.Env = os.Environ()
shellutil.UpdateCmdEnv(ecmd, shellutil.WaveshellEnvVars(shellutil.DefaultTermType))
cmdPty, cmdTty, err := pty.Open()
if err != nil {
return nil, fmt.Errorf("opening new pty: %w", err)
}
pty.Setsize(cmdPty, &pty.Winsize{Rows: shellutil.DefaultTermRows, Cols: shellutil.DefaultTermCols})
if termSize.Rows == 0 || termSize.Cols == 0 {
termSize.Rows = shellutil.DefaultTermRows
termSize.Cols = shellutil.DefaultTermCols
}
if termSize.Rows <= 0 || termSize.Cols <= 0 {
return nil, fmt.Errorf("invalid term size: %v", termSize)
}
pty.Setsize(cmdPty, &pty.Winsize{Rows: uint16(termSize.Rows), Cols: uint16(termSize.Cols)})
ecmd.Stdin = cmdTty
ecmd.Stdout = cmdTty
ecmd.Stderr = cmdTty