Documentation
¶
Overview ¶
Package ui provides interactive selection prompts for the CLI.
Index ¶
- Variables
- func BuildGroupOptions(groups []models.GroupsEligibleTarget) []string
- func BuildOptions(targets []models.EligibleTarget) []string
- func BuildSessionOptions(sessions []models.SessionInfo, nameMap map[string]string, ...) []string
- func ConfirmRevocation(count int) (bool, error)
- func FindGroupByDisplay(groups []models.GroupsEligibleTarget, display string) (*models.GroupsEligibleTarget, error)
- func FindSessionByDisplay(sessions []models.SessionInfo, nameMap map[string]string, ...) (*models.SessionInfo, error)
- func FindTargetByDisplay(targets []models.EligibleTarget, display string) (*models.EligibleTarget, error)
- func FormatGroupOption(group models.GroupsEligibleTarget) string
- func FormatSessionOption(session models.SessionInfo, nameMap map[string]string, ...) string
- func FormatTargetOption(target models.EligibleTarget) string
- func IsInteractive() bool
- func SelectGroup(groups []models.GroupsEligibleTarget) (*models.GroupsEligibleTarget, error)
- func SelectSessions(sessions []models.SessionInfo, nameMap map[string]string) ([]models.SessionInfo, error)
- func SelectTarget(targets []models.EligibleTarget) (*models.EligibleTarget, error)
Constants ¶
This section is empty.
Variables ¶
var ErrNotInteractive = errors.New("interactive selection requires a terminal")
ErrNotInteractive is returned when an interactive prompt is attempted without a terminal attached to stdin.
var IsTerminalFunc = func(fd uintptr) bool { return isatty.IsTerminal(fd) || isatty.IsCygwinTerminal(fd) }
IsTerminalFunc checks whether the given file descriptor is a terminal. It is a variable so tests can override it.
Functions ¶
func BuildGroupOptions ¶ added in v0.3.0
func BuildGroupOptions(groups []models.GroupsEligibleTarget) []string
BuildGroupOptions builds a sorted list of display options from groups eligible targets.
func BuildOptions ¶
func BuildOptions(targets []models.EligibleTarget) []string
BuildOptions builds a sorted list of display options from eligible targets.
func BuildSessionOptions ¶ added in v0.3.0
func BuildSessionOptions( sessions []models.SessionInfo, nameMap map[string]string, groupNameMap map[string]string, remainingMap map[string]time.Duration, ) []string
BuildSessionOptions builds a sorted list of display options from sessions.
func ConfirmRevocation ¶ added in v0.3.0
ConfirmRevocation prompts the user to confirm session revocation.
func FindGroupByDisplay ¶ added in v0.3.0
func FindGroupByDisplay(groups []models.GroupsEligibleTarget, display string) (*models.GroupsEligibleTarget, error)
FindGroupByDisplay finds a group by its formatted display string.
func FindSessionByDisplay ¶ added in v0.3.0
func FindSessionByDisplay( sessions []models.SessionInfo, nameMap map[string]string, groupNameMap map[string]string, remainingMap map[string]time.Duration, display string, ) (*models.SessionInfo, error)
FindSessionByDisplay finds a session by its formatted display string.
func FindTargetByDisplay ¶
func FindTargetByDisplay(targets []models.EligibleTarget, display string) (*models.EligibleTarget, error)
FindTargetByDisplay finds a target by its formatted display string.
func FormatGroupOption ¶ added in v0.3.0
func FormatGroupOption(group models.GroupsEligibleTarget) string
FormatGroupOption formats a groups eligible target into a display string.
func FormatSessionOption ¶ added in v0.3.0
func FormatSessionOption( session models.SessionInfo, nameMap map[string]string, groupNameMap map[string]string, remainingMap map[string]time.Duration, ) string
FormatSessionOption formats a session for display in the multi-select UI. groupNameMap and remainingMap are nil-safe; when nil, behavior is identical to the original (backwards compatible).
func FormatTargetOption ¶
func FormatTargetOption(target models.EligibleTarget) string
FormatTargetOption formats an eligible target into a display string.
func IsInteractive ¶ added in v0.6.0
func IsInteractive() bool
IsInteractive reports whether stdin is connected to a terminal.
func SelectGroup ¶ added in v0.3.0
func SelectGroup(groups []models.GroupsEligibleTarget) (*models.GroupsEligibleTarget, error)
SelectGroup presents an interactive selector for choosing a group. It sorts a copy of the groups so that FindGroupByDisplay searches the same ordered slice the user saw, avoiding wrong-group selection on display collisions.
func SelectSessions ¶ added in v0.3.0
func SelectSessions(sessions []models.SessionInfo, nameMap map[string]string) ([]models.SessionInfo, error)
SelectSessions presents a multi-select prompt for choosing sessions to revoke.
func SelectTarget ¶
func SelectTarget(targets []models.EligibleTarget) (*models.EligibleTarget, error)
SelectTarget presents an interactive selector for choosing a target.
Types ¶
This section is empty.