Axon is a lightweight Go library for building interactive command-line applications, providing simple and easy-to-use terminal interaction features.

go get github.com/muleiwu/axon
package main
import (
"fmt"
"github.com/muleiwu/axon"
"github.com/muleiwu/axon/pkg/question"
)
func main() {
// Standard question
name := axon.Question("Please enter your name: ", "")
fmt.Printf("Hello, %s!\n", name)
// Confirmation question
proceed := axon.Confirm("Continue? (y/n) ", true)
if proceed {
fmt.Println("Continuing...")
} else {
fmt.Println("Cancelled")
return
}
// Password input (hidden display)
password := axon.Password("Please enter password: ", "")
fmt.Println("Password saved")
// Phone number (with validation and masking)
phone := axon.PhoneNumber("Please enter mobile number: ", "")
fmt.Println("Mobile number saved")
// Selection list
items := []question.SelectionItem{
{Label: "Option 1", Description: "This is the first option", Value: "option1"},
{Label: "Option 2", Description: "This is the second option", Value: "option2"},
{Label: "Option 3", Description: "This is the third option", Value: "option3"},
}
selected := axon.Selection("Please select an option:", items)
if selected == "exit" {
fmt.Println("You chose to exit")
} else {
fmt.Printf("You selected: %s\n", selected)
}
}
func Question(question string, defaultValue string) string
Ask the user a standard question and get text input.
question: The question text to display to the userdefaultValue: Default value, used when the user presses enter directlyfunc Confirm(question string, defaultValue bool) bool
Ask the user a confirmation question to get a yes/no answer.
question: The question text to display to the userdefaultValue: Default value, used when the user presses enter directlyfunc Password(question string, defaultValue string) string
Ask the user for a password, which will be hidden during input.
question: The question text to display to the userdefaultValue: Default value, used when the user presses enter directlyfunc PhoneNumber(question string, defaultValue string) string
Ask the user for a phone number, with format validation. The input is automatically masked to protect user privacy.
question: The question text to display to the userdefaultValue: Default value, used when the user presses enter directlyfunc Selection(question string, items []SelectionItem) string
Let the user select an item from a list.
question: The question text to display to the useritems: The list of selection itemsWhen creating a selection list, you can define options using the SelectionItem structure:
type SelectionItem struct {
Label string // The display label
Description string // Description information
Value string // Actual value
}
This project is open source under the LICENSE license.