main.go 866 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "strings"
  6. "syscall"
  7. "golang.org/x/crypto/ssh/terminal"
  8. )
  9. var (
  10. oldTermState *terminal.State
  11. )
  12. const prompt = "LBS> "
  13. func main() {
  14. fmt.Printf("\nLBS CLI - version 1.0\n\n")
  15. var err error
  16. oldTermState, err = terminal.MakeRaw(syscall.Stdin)
  17. if err != nil {
  18. fmt.Println(err)
  19. return
  20. }
  21. term := terminal.NewTerminal(os.Stdin, prompt)
  22. rawState, err := terminal.GetState(syscall.Stdin)
  23. if err != nil {
  24. fmt.Println(err)
  25. return
  26. }
  27. for {
  28. cmdline, err := term.ReadLine()
  29. if err != nil {
  30. break
  31. }
  32. cmdline = strings.TrimSpace(cmdline)
  33. if cmdline == "" {
  34. continue
  35. }
  36. terminal.Restore(syscall.Stdin, oldTermState)
  37. fmt.Println("oooooo:", cmdline)
  38. terminal.Restore(syscall.Stdin, rawState)
  39. }
  40. terminal.Restore(syscall.Stdin, oldTermState)
  41. fmt.Println("")
  42. //fmt.Println("Terminal Over !!!!")
  43. }