shithub: hell

ref: a8234dc3c631ff8477654661683f852d61575218
dir: /hellclient.go/

View raw version
package main

import (
	"github.com/chzyer/readline"
	"strings"
)

type Hellclient struct {
	isPaused  bool
	rl        *readline.Instance
	pauseChan chan bool
}

func NewHellclient() (*Hellclient, error) {
	rl, err := readline.New("> ")
	if err != nil {
		return nil, err
	}
	return &Hellclient{rl: rl, pauseChan: make(chan bool)}, nil
}

func (hc *Hellclient) updatePrompt() {
	var sb strings.Builder
	if hc.isPaused {
		sb.WriteString("STREAMING PAUSED ")
	}
	sb.WriteString("> ")
	hc.rl.SetPrompt(sb.String())
}

func (hc *Hellclient) pause(on bool) {
	hc.isPaused = on
	hc.pauseChan <- hc.isPaused
	hc.updatePrompt()
}

func (hc *Hellclient) togglepause() {
	hc.isPaused = !hc.isPaused
	hc.pauseChan <- hc.isPaused
	hc.updatePrompt()
}