gg_terminal

package
v0.3.36 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2025 License: BSD-3-Clause Imports: 11 Imported by: 0

README

Terminal

Wrap a terminal and allow to send commands to it and wait for the cursor.

Tested on Mac and Linux with:

  • OLLAMA
  • MYSQL
  • PYTHON

Should work also with Microsoft Windows.

Usage:

package terminal_test

import (
	"bitbucket.org/digi-sense/gg-core-x/gg_terminal"
	"log"
	"os"
	"testing"
)

func TestTerminalPython(t *testing.T) {
	options := &gg_terminal.TerminalOptions{
		CutSet: nil,
		Cursor: ">>>",
	}
	term, err := gg_terminal.Terminal.Create("python", os.Stderr, options)
	if nil != err {
		t.Error(err)
		t.FailNow()
	}
	log.Println("Terminal created:", term)
	defer term.Close()

	err = term.Open()
	if nil != err {
		t.Error(err)
		t.FailNow()
	}
	log.Println("Terminal opened with PID:", term.Pid())

	// WAIT THE CURSOR
	log.Println(term.WaitCursor())

	prompt := "credits"
	log.Println("PROMPT:", prompt)
	_, err = term.Prompt(prompt)
	if nil != err {
		t.Error(err)
		t.FailNow()
	}

	// WAIT RESPONSE TO PROMPT
	log.Println(string(term.WaitResponse()))

	// WAIT THE CURSOR
	log.Println(term.WaitCursor())

	prompt = "copyright"
	log.Println("PROMPT:", prompt)
	_, err = term.WriteLine([]byte(prompt))
	if nil != err {
		t.Error(err)
		t.FailNow()
	}

	// WAIT RESPONSE TO PROMPT
	log.Println(string(term.WaitResponse()))

	// WAIT THE CURSOR
	log.Println(term.WaitCursor())

	go func() {
		_, err = term.WriteLineString("quit()")
	}()

	err = term.WaitFinish()
	if nil != err {
		t.Error(err)
		t.FailNow()
	}
	log.Println("Quitting...")
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EnsureLineBreakToBytes

func EnsureLineBreakToBytes(data []byte) (response []byte)

func EnsureLineBreakToString

func EnsureLineBreakToString(data string) (response string)

func HasLineBreak

func HasLineBreak(data []byte) bool

func StripANSI

func StripANSI(data []byte) []byte

func StripANSI2

func StripANSI2(data []byte) []byte

func StripANSIString

func StripANSIString(str string) string

func StripANSIs

func StripANSIs(str string) string

func StripAll

func StripAll(data []byte, cutSet []string) []byte

func StripAllString

func StripAllString(str string, cutSet []string) string

Types

type ITerminal

type ITerminal interface {
	Open(args ...string) (err error)
	Close() (err error)
	WaitFinish() (err error)
	SetCommand(args ...string) (err error)
	Options(value ...*TerminalOptions) *TerminalOptions
	OnProgress(h OnProgressHandler)
	OnRead(h OnReadHandler)
	AddOutput(writers ...io.Writer)
	Pid() int
	Write(data []byte) (int, error)
	WriteLine(data []byte) (int, error)
	WriteLineString(data string) (int, error)
	Prompt(prompt string) (response int, err error)
	WaitCursor() (response string)
	WaitResponse() (response []byte)
}

func CreateTerminal

func CreateTerminal(args ...interface{}) (response ITerminal, err error)

type OnProgressHandler

type OnProgressHandler func()

type OnReadHandler

type OnReadHandler func(cursor, text string)

type TerminalHelper

type TerminalHelper struct {
}
var Terminal *TerminalHelper

func (*TerminalHelper) Create

func (instance *TerminalHelper) Create(args ...interface{}) (response ITerminal, err error)

type TerminalOptions

type TerminalOptions struct {
	Cursor string   `json:"cursor"`
	CutSet []string `json:"cutset"`
}

type TerminalX

type TerminalX struct {
	// contains filtered or unexported fields
}

TerminalX Implementation of generic cross-platform terminal

func NewTerminalX

func NewTerminalX(args ...string) (instance *TerminalX, err error)

func (*TerminalX) AddOutput

func (instance *TerminalX) AddOutput(writers ...io.Writer)

func (*TerminalX) Close

func (instance *TerminalX) Close() (err error)

func (*TerminalX) GetName

func (instance *TerminalX) GetName() string

func (*TerminalX) OnProgress

func (instance *TerminalX) OnProgress(h OnProgressHandler)

func (*TerminalX) OnRead

func (instance *TerminalX) OnRead(h OnReadHandler)

func (*TerminalX) Open

func (instance *TerminalX) Open(args ...string) (err error)

func (*TerminalX) Options

func (instance *TerminalX) Options(value ...*TerminalOptions) *TerminalOptions

func (*TerminalX) Pid

func (instance *TerminalX) Pid() int

func (*TerminalX) Prompt

func (instance *TerminalX) Prompt(prompt string) (response int, err error)

func (*TerminalX) SetCommand

func (instance *TerminalX) SetCommand(args ...string) (err error)

func (*TerminalX) SetName

func (instance *TerminalX) SetName(value string) *TerminalX

func (*TerminalX) String

func (instance *TerminalX) String() string

func (*TerminalX) WaitCursor

func (instance *TerminalX) WaitCursor() (response string)

func (*TerminalX) WaitFinish

func (instance *TerminalX) WaitFinish() (err error)

func (*TerminalX) WaitResponse

func (instance *TerminalX) WaitResponse() (response []byte)

func (*TerminalX) Write

func (instance *TerminalX) Write(data []byte) (response int, err error)

func (*TerminalX) WriteLine

func (instance *TerminalX) WriteLine(data []byte) (response int, err error)

func (*TerminalX) WriteLineString

func (instance *TerminalX) WriteLineString(data string) (response int, err error)

type TerminalXBuffer

type TerminalXBuffer struct {
	// contains filtered or unexported fields
}

func NewTerminalXBuffer

func NewTerminalXBuffer(cursor string, cutSet []string) (instance *TerminalXBuffer)

func (*TerminalXBuffer) Bytes

func (instance *TerminalXBuffer) Bytes() []byte

func (*TerminalXBuffer) ChanOutput

func (instance *TerminalXBuffer) ChanOutput() chan *TerminalXBufferOutput

func (*TerminalXBuffer) OnProgress

func (instance *TerminalXBuffer) OnProgress(h ...OnProgressHandler)

func (*TerminalXBuffer) Reset

func (instance *TerminalXBuffer) Reset()

func (*TerminalXBuffer) SetInput

func (instance *TerminalXBuffer) SetInput(p []byte)

func (*TerminalXBuffer) SetInputString

func (instance *TerminalXBuffer) SetInputString(s string)

func (*TerminalXBuffer) String

func (instance *TerminalXBuffer) String() string

func (*TerminalXBuffer) Write

func (instance *TerminalXBuffer) Write(p []byte)

func (*TerminalXBuffer) WriteString

func (instance *TerminalXBuffer) WriteString(s string)

type TerminalXBufferOutput

type TerminalXBufferOutput struct {
	Cursor   string
	Response []byte
}

Directories

Path Synopsis
gg_terminal_lib
pty
termios
Package termios implements basic termios operations including getting a tty struct, termio struct, a winsize struct, and setting raw mode.
Package termios implements basic termios operations including getting a tty struct, termio struct, a winsize struct, and setting raw mode.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL