goprompt

package module
v0.1.4 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2022 License: MIT Imports: 6 Imported by: 0

README

goprompt

goprompt is a minimalistic library that wraps github.com/chzyer/readline in order to provide simple prompts and selection mechanisms to CLI applications.

Usage

This library provides two main structures: Prompt and Select:

Prompt
package main

import (
	"fmt"
	"os"
	"strings"

	"github.com/Gympass/goprompt"
)

func main() {
	prompt := goprompt.Prompt{
		Label:        "Name",
		DefaultValue: "Paul Appleseed",
		Description:  "Something explaining why we are prompting for the user's name",
		Validation: func(s string) bool {
			// Return true to allow value to be accepted.
			// Let's suppose we want to check whether the name contains at least
			// one space.
			return strings.Contains(s, " ")
		},
	}

	result, err := prompt.Run()
	if err != nil {
		// Error showing prompt
		panic(err)
	}
	if result.Cancelled {
		fmt.Println("Aborted.")
		os.Exit(1)
	}
}
Select
package main

import (
	"fmt"
	"os"
	"strings"

	"github.com/Gympass/goprompt"
)

func main() {
	sel := goprompt.Select{
		Label:        "Select an item",
		Description:  "Something explaining why we are prompting the user to select an item",
	}

	result, err := sel.Run()
	if err != nil {
		// Error showing prompt
		panic(err)
	}
	if result.Cancelled {
		fmt.Println("Aborted.")
		os.Exit(1)
	}
	fmt.Printf("You selected option %s (index %d)\n", result.SelectedValue, result.SelectedIndex)
}

License

MIT License

Copyright (c) 2021 Victor Gama

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Prompt

type Prompt struct {

	// Label represents the prompt itself. It is presented right before the
	// user's input area
	Label string

	// DefaultValue represents the initial value of the prompt.
	DefaultValue string

	// Description is shown right before the Label line. Usually this should
	// present some context to the user.
	Description string

	// Validation provides a way to ensure the user has provided a valid value
	// to the prompt. When defined, this function receives the value the user
	// is trying to use, and must return whether the value is valid. When this
	// function returns false, the prompt is replaced from "?" to an X,
	// indicating something is wrong, and the prompt is not dismissed until the
	// user input a valid value, or aborts the operation.
	Validation func(s string) bool
	// contains filtered or unexported fields
}

Prompt displays a single prompt asking the user to input a given information

func (*Prompt) Run

func (p *Prompt) Run() (*PromptResult, error)

Run shows the prompt on screen. Returns either a PromptResult, or an error, in case the displaying process fails.

type PromptResult

type PromptResult struct {
	// Value represents the value input by the user
	Value string

	// Cancelled indicates whether the operation was cancelled by the user;
	// usually when they send an interruption signal to the process.
	Cancelled bool
}

PromptResult represents the result of a Prompt operation.

type Select

type Select struct {
	// Description to be shown before the list itself.
	Description string
	// Options represent items to be presented to the user.
	Options []string
	// Label is displayed along the instructions of using arrows to select,
	// enter to confirm. Usually this would be a prompt like "Select an item".
	Label string
	// contains filtered or unexported fields
}

Select displays a list composed of provided items, and allows users to select a single item using arrow keys.

func (*Select) Run

func (s *Select) Run() (*SelectResult, error)

Run shows the select on screen. Returns either a SelectResult, or an error, in case the displaying process fails.

type SelectResult

type SelectResult struct {
	// SelectedIndex indicates which index of provided Select.Options was
	// selected by the user.
	SelectedIndex int

	// SelectedValue indicates which value of provided Select.Options was
	// selected by the user.
	SelectedValue string

	// Cancelled indicates whether the operation was cancelled by the user;
	// usually when they send an interruption signal to the process.
	Cancelled bool
}

SelectResult represents the result of a Select operation.

Jump to

Keyboard shortcuts

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