Description
Apols if I'm making a mistake here and this is not a bug - I would like to be able to access ishell through another terminal instance on Linux with go 1.12.5. So first, I set up a listener (leaving out error handling and defer
here to keep the code short):
listener, err := net.Listen("tcp", host)
conn, err := listener.Accept()
where host is "localhost:8000" for testing. Next, I've imported "github.com/abiosoft/readline"
to be able to run the shell with the listener's connection parameters in the configuration for NewWithConfig:
termCfg := &readline.Config{
Stdin: io.ReadCloser(conn),
Stdout: io.Writer(conn),
StdinWriter: io.Writer(conn),
Stderr: io.Writer(conn),
}
Then I start the shell in a second terminal window through the listener:
shell := ishell.NewWithConfig(termCfg)
shell.Run()
This works fine when I open another shell and connect with nc localhost 8000
- except for the fact that after I type in a command such as help
, the input line is not only echoed character for character as expected, but then printed again, giving me stuff like
> help
> help
Commands:
clear clear the screen
exit exit the program
help display help
I'm wondering if StdinWriter is the problem here, but changing that doesn't seem to help. I can't find an example for NewWithConfig
in the docs. Is this a bug or am I missing something obvious? Thanks!