go-prompt/_example/sleep/main.go

44 lines
745 B
Go

package main
import (
"context"
"fmt"
"os/exec"
"time"
"github.com/c-bata/go-prompt-toolkit"
)
func executor(ctx context.Context, t string) string {
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
if t == "sleep 5s" {
cmd := exec.CommandContext(ctx, "sleep", "5")
cmd.Run()
fmt.Println("Foo")
} else if t == "sleep 20s" {
cmd := exec.CommandContext(ctx, "sleep", "20")
cmd.Run()
fmt.Println("Foo")
}
return ""
}
func completer(t string) []prompt.Suggest {
return []prompt.Suggest{
{Text: "sleep 5s"},
{Text: "sleep 20s"},
}
}
func main() {
pt := prompt.NewPrompt(
executor,
completer,
prompt.OptionOutputTextColor(prompt.DarkGray),
)
defer fmt.Println("\nGoodbye!")
pt.Run()
}