Popularity
3.0
Stable
Activity
0.0
Declining
62
3
5
Programming language: Go
License: MIT License
Tags:
Command Line
Standard CLI
Latest version: v2.0.1
strumt alternatives and similar packages
Based on the "Standard CLI" category.
Alternatively, view strumt alternatives based on common mentions on social networks and blogs.
-
survey
DISCONTINUED. A golang library for building interactive and accessible prompts with full support for windows and posix terminals. -
The Platinum Searcher
A code search tool similar to ack and the_silver_searcher(ag). It supports multi platforms and multi encodings. -
flaggy
Idiomatic Go input parsing with subcommands, positional values, and flags at any position. No required project or package layout and no external dependencies. -
flag
Flag is a simple but powerful command line option parsing library for Go support infinite level subcommand -
go-getoptions
Fully featured Go (golang) command line option parser with built-in auto-completion support. -
command-chain
A go library for easy configure and run command chains. Such like pipelining in unix shells. -
Go-Console
GoConsole: the golang component that eases the creation of beautiful command line interfaces.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
Promo
www.saashub.com
Do you think we are missing an alternative of strumt or a related project?
Popular Comparisons
README
Strumt
Strumt is a library to create prompt chain. It provides multiline prompt, input validation, retry on error, ability to create typesafe prompt, ability to customize prompt and error display, a recording of prompt session and the ability to easily test your prompt scenario.
Example
Checkout godoc to have more examples : https://godoc.org/github.com/antham/strumt
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"github.com/antham/strumt"
)
func main() {
user := User{}
p := strumt.NewPromptsFromReaderAndWriter(bufio.NewReader(os.Stdin), os.Stdout)
p.AddLinePrompter(&StringPrompt{&user.FirstName, "Enter your first name", "userName", "lastName", "userName"})
p.AddLinePrompter(&StringPrompt{&user.LastName, "Enter your last name", "lastName", "age", "lastName"})
p.AddLinePrompter(&IntPrompt{&user.Age, "Enter your age", "age", "", "age"})
p.SetFirst("userName")
p.Run()
for _, step := range p.Scenario() {
fmt.Println(step.PromptString())
fmt.Println(step.Inputs()[0])
if step.Error() != nil {
fmt.Println(step.Error())
}
}
fmt.Println()
fmt.Printf("User datas : %#v", user)
}
type StringPrompt struct {
store *string
prompt string
currentID string
nextPrompt string
nextPromptOnError string
}
func (s *StringPrompt) ID() string {
return s.currentID
}
func (s *StringPrompt) PromptString() string {
return s.prompt
}
func (s *StringPrompt) Parse(value string) error {
if value == "" {
return fmt.Errorf("Empty value given")
}
*(s.store) = value
return nil
}
func (s *StringPrompt) NextOnSuccess(value string) string {
return s.nextPrompt
}
func (s *StringPrompt) NextOnError(err error) string {
return s.nextPromptOnError
}
type IntPrompt struct {
store *int
prompt string
currentID string
nextPrompt string
nextPromptOnError string
}
func (i *IntPrompt) ID() string {
return i.currentID
}
func (i *IntPrompt) PromptString() string {
return i.prompt
}
func (i *IntPrompt) Parse(value string) error {
age, err := strconv.Atoi(value)
if err != nil {
return fmt.Errorf("%s is not a valid number", value)
}
if age <= 0 {
return fmt.Errorf("Give a valid age")
}
*(i.store) = age
return nil
}
func (i *IntPrompt) NextOnSuccess(value string) string {
return i.nextPrompt
}
func (i *IntPrompt) NextOnError(err error) string {
return i.nextPromptOnError
}
type User struct {
FirstName string
LastName string
Age int
}