utils

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2026 License: MIT Imports: 26 Imported by: 1

Documentation

Index

Constants

View Source
const (
	AuthMFARequired  = "auth_mfa_required"
	UsernameRequired = "user_username_required"
)

Variables

View Source
var Version string = "dev"

Functions

func Blue

func Blue(value string) string

Blue converts a string to blue color in the console with bold text.

func Bold added in v1.2.0

func Bold(value string) string

Bold converts a string to bold text in the console.

func BoolPointerToString

func BoolPointerToString(value *bool) string

func BuildURL

func BuildURL(basePath, relativePath string, params map[string]string) string

func CliError

func CliError(msg string, args ...any)

CliError handles all error messages in the CLI.

func CliErrorWithExit added in v1.0.0

func CliErrorWithExit(msg string, args ...any)

CliErrorWithExit handles all error messages in the CLI.

func CliInfo

func CliInfo(msg string, args ...any)

CliInfo handles all informational messages in the CLI.

func CliInfoWithExit

func CliInfoWithExit(msg string, args ...any)

CliInfoWithExit prints an informational message to stderr and exits the program with a status code of 0

func CliSuccess added in v1.2.0

func CliSuccess(msg string, args ...any)

CliSuccess handles all success messages in the CLI.

func CliWarning

func CliWarning(msg string, args ...any)

CliWarning handles all warning messages in the CLI.

func CommandConfirm added in v0.4.4

func CommandConfirm() bool

CommandConfirm prompts the user for confirmation to continue executing a command. It returns true if the user enters "y" or "yes" (case-insensitive), and false otherwise.

func ConfirmAction added in v1.2.0

func ConfirmAction(msg string, args ...any)

ConfirmAction prompts the user for confirmation before a destructive action. In non-interactive mode (piped stdin, CI, etc.), it exits and asks for --yes flag. Returns on confirm; exits the program on decline.

func CreateAndEditTempFile

func CreateAndEditTempFile(data []byte) (string, error)

func DecodeJWTPayload added in v1.1.0

func DecodeJWTPayload(token string) (map[string]any, error)

DecodeJWTPayload decodes the payload (second segment) of a JWT token without verifying the signature. Returns the claims as a map.

func DeleteFile

func DeleteFile(path string) error

func ExtractBaseDomain added in v1.1.0

func ExtractBaseDomain(workspaceURL string) string

ExtractBaseDomain extracts the top-level base domain from a workspace URL. For example, "https://myws.us1.alpacon.io" returns "alpacon.io". Returns "" if the hostname has fewer than 3 parts (e.g. self-hosted with no subdomain).

func ExtractWorkspaceName added in v0.4.0

func ExtractWorkspaceName(workspaceURL string) string

ExtractWorkspaceName extracts workspace name from workspace URL

func FormatSSHTarget added in v0.4.0

func FormatSSHTarget(target SSHTarget) string

FormatSSHTarget formats an SSHTarget back into a string representation

func GetCLIVersion

func GetCLIVersion() string

func GetUserAgent

func GetUserAgent() string

func Green

func Green(value string) string

Green converts a string to green color in the console with bold text.

func HandleCommonErrors added in v1.0.0

func HandleCommonErrors(err error, serverName string, callbacks ErrorHandlerCallbacks) error

HandleCommonErrors handles common errors (MFA, UsernameRequired) with retry logic Returns nil if error was handled successfully, otherwise returns the original or new error

func IsInteractiveShell added in v0.4.4

func IsInteractiveShell() bool

IsInteractiveShell checks if the current program is running in an interactive terminal.

func IsLocalTarget added in v0.4.0

func IsLocalTarget(target string) bool

IsLocalTarget checks if a target string represents a local location

func IsRemoteTarget added in v0.4.0

func IsRemoteTarget(target string) bool

IsRemoteTarget checks if a target string represents a remote location A target is considered remote if it contains a colon (:)

func IsUUID

func IsUUID(str string) bool

func OpenBrowser added in v1.3.3

func OpenBrowser(url string)

OpenBrowser attempts to open the given URL in the user's default browser. It silently falls back to doing nothing if the browser cannot be opened (e.g., headless server, SSH session, container) or if another process recently opened a browser (debounce).

Set ALPACON_NO_BROWSER=1 to disable browser auto-open globally.

func ParseErrorResponse added in v0.4.0

func ParseErrorResponse(err error) (code, source string)

func PrettyJSON

func PrettyJSON(data []byte) (*bytes.Buffer, error)

func PrintHeader

func PrintHeader(header string)

func PrintJson

func PrintJson(body []byte)

func PrintTable

func PrintTable(slice any)

func ProcessEditedData

func ProcessEditedData(originalData []byte) (any, error)

ProcessEditedData facilitates user modifications to original data, formats it, supports editing via a temp file, compares the edited data against the original, and parses it into JSON. If no changes are made, the update is aborted and an error is returned.

func PromptForBool

func PromptForBool(prompt string) bool

func PromptForInput

func PromptForInput(promptText string) string

func PromptForInputWithDefault added in v1.3.4

func PromptForInputWithDefault(promptText, defaultValue string) string

PromptForInputWithDefault prompts for input and returns the default if empty.

func PromptForIntInput

func PromptForIntInput(promptText string, defaultValue int) int

func PromptForListInput

func PromptForListInput(promptText string) []string

func PromptForPassword

func PromptForPassword(promptText string) string

func PromptForRequiredInput

func PromptForRequiredInput(promptText string) string

func PromptForRequiredIntInput

func PromptForRequiredIntInput(promptText string) int

func PromptForRequiredListInput

func PromptForRequiredListInput(promptText string) []string

func ReadFileFromPath

func ReadFileFromPath(filePath string) ([]byte, error)

func Red

func Red(value string) string

Red converts a string to red color in the console with bold text.

func RemovePrefixBeforeAPI

func RemovePrefixBeforeAPI(url string) string

func SaveFile

func SaveFile(fileName string, data []byte) error
func ShowLogo()

func SplitAndParseInt

func SplitAndParseInt(input string) []int

func SplitPath

func SplitPath(path string) (string, string)

func TimeFormat

func TimeFormat(value int) *string

func TimeUtils

func TimeUtils(t time.Time) string

func TruncateString

func TruncateString(str string, num int) string

func Unzip

func Unzip(src string, dest string) error

func WriteToPager added in v1.0.0

func WriteToPager() (io.Writer, func())

WriteToPager returns a writer that buffers output and pipes it through a pager only when the output exceeds the terminal height. The caller must call the returned cleanup function when done writing.

Behavior:

  • If stdout is not a terminal (e.g. piped), prints directly to stdout.
  • If the output fits within the terminal height, prints directly to stdout.
  • Otherwise, pipes through the PAGER environment variable or "less -RSX".
  • Falls back to direct stdout if the pager command is not available.

func Yellow

func Yellow(value string) string

Yellow converts a string to yellow color in the console with bold text.

func Zip

func Zip(folderPath string) ([]byte, error)

Types

type ErrorHandlerCallbacks added in v1.0.0

type ErrorHandlerCallbacks struct {
	// OnMFARequired is called when MFA authentication is required
	// serverName: the name of the server requiring MFA
	OnMFARequired func(serverName string) error

	// OnUsernameRequired is called when username is required
	OnUsernameRequired func() error

	// CheckMFACompleted is called to poll for MFA completion via a lightweight endpoint.
	// If nil, falls back to the legacy RefreshToken+RetryOperation loop.
	CheckMFACompleted func() (bool, error)

	// RefreshToken is called before each MFA retry to refresh the access token
	// so the server can see the latest MFA completion state
	RefreshToken func() error

	// RetryOperation is called to retry the original operation after error handling
	// Should return nil on success, error on failure
	RetryOperation func() error
}

ErrorHandlerCallbacks defines callback functions for handling different error types

type ErrorResponse added in v0.4.0

type ErrorResponse struct {
	Code   string `json:"code"`
	Source string `json:"source"`
}

type SSHTarget added in v0.4.0

type SSHTarget struct {
	User string // Username (empty if not specified)
	Host string // Hostname/server name
	Path string // Path (empty if not specified)
}

SSHTarget represents a parsed SSH-like target with user, host, and path components

func ParseSSHTarget added in v0.4.0

func ParseSSHTarget(target string) SSHTarget

ParseSSHTarget parses SSH-like target strings and returns the components Supports formats: - host - user@host - host:path - user@host:path

type Spinner added in v1.0.0

type Spinner struct {
	// contains filtered or unexported fields
}

Spinner displays an animated spinner with a message

func NewSpinner added in v1.0.0

func NewSpinner(message string) *Spinner

NewSpinner creates a new spinner with the given message If the message ends with "...", the dots will animate (. -> .. -> ...)

func (*Spinner) Start added in v1.0.0

func (s *Spinner) Start()

Start begins the spinner animation

func (*Spinner) Stop added in v1.0.0

func (s *Spinner) Stop()

Stop stops the spinner animation

func (*Spinner) StopWithMessage added in v1.0.0

func (s *Spinner) StopWithMessage(message string)

StopWithMessage stops the spinner and prints a final message

func (*Spinner) UpdateMessage added in v1.0.0

func (s *Spinner) UpdateMessage(message string)

UpdateMessage updates the spinner message while running

Jump to

Keyboard shortcuts

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