Help us shape the future of Go! Take the 2026 Go Developer Survey

config

package
v1.41.0 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package config is a helper package to facilitate getting and setting config values using Viper.

This package provides functions to read and write configuration settings for the eng CLI tool. It supports various configuration file formats and allows for easy management of local configuration settings.

Key features: - Load configuration from JSON, YAML, TOML, and other formats. - Set and get configuration values programmatically. - Support for environment variable overrides. - Easy integration with the Viper library.

These are local configs related to the eng CLI, not deployment configs.

Index

Constants

This section is empty.

Variables

View Source
var PromptProxyValues = PromptProxyValuesImpl

PromptProxyValues is a variable that holds the function to prompt for proxy values. This can be overridden in tests.

View Source
var SaveProxyConfigs = SaveProxyConfigsImpl

SaveProxyConfigs is a variable that holds the function to save proxy configurations This can be overridden in tests.

Functions

func AddProject

func AddProject(project Project) error

AddProject adds a new project or updates an existing one. If a project with the same name exists, it updates it; otherwise, it appends.

func AddRepoToProject

func AddRepoToProject(projectName string, repo ProjectRepo) error

AddRepoToProject adds a repository to an existing project. Returns an error if the project doesn't exist.

func BareRepoPath

func BareRepoPath() string

BareRepoPath checks for the bare repository path in the configuration and returns it.

func Branch

func Branch() string

Branch checks for the dotfiles branch in the configuration and returns it.

func DisableAllProxies

func DisableAllProxies() error

DisableAllProxies disables all proxy configurations and unsets environment variables.

func DotfilesRepo

func DotfilesRepo() string

DotfilesRepo is an alias for BareRepoPath for backward compatibility with external callers.

func Email

func Email() string

Email checks for the user's email in the configuration and prompts the user to confirm it. If the email is not found or the user does not confirm it, the function will call updateEmail() to update the email. It logs the start and success of the email checking process and returns the confirmed email as a string.

func FindProxyIndexByTitle

func FindProxyIndexByTitle(proxies []ProxyConfig, title string) int

FindProxyIndexByTitle returns the index of the proxy matching the title (case-insensitive), or -1.

func FormatProxyOption

func FormatProxyOption(proxy ProxyConfig) string

FormatProxyOption renders a single proxy as a stylized radio option string. Example: "● Corp Proxy (http://proxy:8080)" with colored markers and dimmed value.

func GetActiveProxy

func GetActiveProxy() (string, bool)

GetActiveProxy returns the currently active proxy value and true if any proxy is enabled If no proxy is enabled, returns the first proxy value and false If no proxies exist, returns an empty string and false.

func GetDotfilesRepo

func GetDotfilesRepo()

GetDotfilesRepo logs the current dotfiles repository path.

func GetEmail

func GetEmail()

GetEmail retrieves the user's email from the configuration. If the email is not found in the configuration, it prompts the user to update it. Logs the process of checking and finding the email.

func GetProjectNames

func GetProjectNames() []string

GetProjectNames returns a list of all configured project names.

func GitDevPath

func GitDevPath() string

GitDevPath checks for the development folder path in the configuration and prompts the user to confirm it. If the path is not found or the user does not confirm it, the function will call updateGitDevPath() to update the path. It logs the start and success of the path checking process and returns the confirmed path as a string.

func IdeURL added in v1.40.0

func IdeURL(optionalURL ...string) string

IdeURL checks for the Antigravity IDE download URL in the configuration and prompts the user to confirm or set it. If an optionalURL argument is passed, it sets the URL directly.

func IsVerbose added in v1.15.0

func IsVerbose() bool

IsVerbose returns whether verbose mode is enabled globally via config or environment.

func MigrateConfig

func MigrateConfig()

MigrateConfig handles the migration of old configuration keys to new standardized ones. It checks for old keys, moves their values to new keys if the new ones are empty, and saves the configuration if any changes were made.

func NormalizeProxyURLString

func NormalizeProxyURLString(value string) string

NormalizeProxyURLString adds a default http scheme when missing.

func PromptProxyValuesImpl added in v1.15.0

func PromptProxyValuesImpl(
	initialTitle, initialValue, initialNoProxy string,
) (title, value, noProxy string, err error)

PromptProxyValuesImpl uses huh.NewForm to collect proxy details interactively.

func RemoveProject

func RemoveProject(projectName string) error

RemoveProject removes a project from the configuration.

func RemoveRepoFromProject

func RemoveRepoFromProject(projectName, repoURL string) error

RemoveRepoFromProject removes a repository from a project.

func RepoNameFromURL

func RepoNameFromURL(repoURL string) (string, error)

RepoNameFromURL extracts the repository name from a git URL. Supports both SSH (git@host:path/git.git) and HTTPS (https://host/path/git.git) formats.

func RepoURL

func RepoURL() string

RepoURL checks for the dotfiles repository URL in the configuration and returns it.

func RunInteractiveEditor added in v1.16.0

func RunInteractiveEditor() error

RunInteractiveEditor launches a TUI to edit the CLI's configuration.

func SaveProjects

func SaveProjects(projects []Project) error

SaveProjects persists the list of projects to the config file.

func SaveProxyConfigsImpl

func SaveProxyConfigsImpl(proxies []ProxyConfig) error

SaveProxyConfigsImpl is the actual implementation of saving proxy configurations to viper config.

func SelectProxy

func SelectProxy(proxies []ProxyConfig) (int, error)

SelectProxy prompts the user to select a proxy from the list and returns the index.

func SetIdeURL added in v1.40.0

func SetIdeURL(url string)

SetIdeURL updates the antigravity.ide_download_url setting in viper and writes to config.

func SetProxyEnvVars

func SetProxyEnvVars(proxyValue string)

SetProxyEnvVars sets all proxy-related environment variables to the provided value and handles custom no_proxy settings.

func TargetRepoPath added in v1.38.0

func TargetRepoPath(devPath string) string

TargetRepoPath resolves the destination git repository path for copying dotfile changes. It checks explicit config first, then project configuration, then scans project directories under devPath, and finally falls back to legacy path under devPath.

func TestProxyConnection added in v1.29.0

func TestProxyConnection(proxyURLStr, targetURLStr string) (time.Duration, error)

TestProxyConnection tests HTTP connectivity using the specified proxy URL.

func UnsetProxyEnvVars

func UnsetProxyEnvVars()

UnsetProxyEnvVars unsets all proxy-related environment variables.

func UpdateBareRepoPath

func UpdateBareRepoPath()

UpdateBareRepoPath prompts the user to input their bare repository path.

func UpdateBranch

func UpdateBranch()

UpdateBranch prompts the user to select their dotfiles branch.

func UpdateDotfilesRepo

func UpdateDotfilesRepo()

UpdateDotfilesRepo is an alias for UpdateBareRepoPath.

func UpdateRepoURL

func UpdateRepoURL()

UpdateRepoURL prompts the user to input their dotfiles repository URL.

func UpdateTargetRepoPath added in v1.38.0

func UpdateTargetRepoPath()

UpdateTargetRepoPath prompts the user to input their target repository path.

func UpdateWorktreePath

func UpdateWorktreePath()

UpdateWorktreePath prompts the user to input their worktree path.

func ValidateProxyURLString

func ValidateProxyURLString(value string) error

ValidateProxyURLString validates the proxy URL string for scheme and host:port.

func Verbose

func Verbose() bool

Verbose checks for the verbose setting in the configuration and prompts the user to confirm it. If the verbose setting is not found or the user does not confirm it, the function will call updateVerbose() to update the setting. It logs the start and success of the verbose checking process and returns the confirmed verbose setting as a bool.

func VerifyDotfilesConfig

func VerifyDotfilesConfig() (string, string, string, string, error)

VerifyDotfilesConfig checks for Repo URL, Branch, and Bare Repo Path. If all are present, it offers a single multi-select to update them. If any are missing, it falls back to sequential mandatory prompts.

func WorktreePath

func WorktreePath() string

WorktreePath checks for the worktree path in the configuration and returns it.

Types

type AntigravityConfig added in v1.40.0

type AntigravityConfig struct {
	IdeDownloadURL string `mapstructure:"ide_download_url"`
}

AntigravityConfig holds Antigravity-related configuration.

func GetAntigravityConfig added in v1.40.0

func GetAntigravityConfig() AntigravityConfig

GetAntigravityConfig retrieves the Antigravity configuration from Viper.

type ContainersConfig added in v1.25.0

type ContainersConfig struct {
	Path string `mapstructure:"path"`
}

ContainersConfig holds container-related configuration.

func GetContainersConfig added in v1.25.0

func GetContainersConfig() ContainersConfig

GetContainersConfig retrieves the containers configuration from Viper.

type DotfilesConfig added in v1.15.0

type DotfilesConfig struct {
	RepoURL        string `mapstructure:"repo_url"`
	Branch         string `mapstructure:"branch"`
	BareRepoPath   string `mapstructure:"bare_repo_path"`
	WorktreePath   string `mapstructure:"worktree_path"`
	TargetRepoPath string `mapstructure:"target_repo_path"`
}

DotfilesConfig holds all dotfiles-related configuration.

func GetDotfilesConfig added in v1.15.0

func GetDotfilesConfig() DotfilesConfig

GetDotfilesConfig retrieves the dotfiles configuration from Viper.

type GitConfig added in v1.15.0

type GitConfig struct {
	DevPath string `mapstructure:"dev_path"`
	Editor  string `mapstructure:"editor"`
}

GitConfig holds all git-related configuration.

func GetGitConfig added in v1.15.0

func GetGitConfig() GitConfig

GetGitConfig retrieves the git configuration from Viper.

type Project

type Project struct {
	Name  string        `mapstructure:"name"`
	Repos []ProjectRepo `mapstructure:"repos"`
}

Project represents a collection of related repositories.

func GetProjectByName

func GetProjectByName(name string) *Project

GetProjectByName retrieves a specific project by name. Returns nil if not found.

func GetProjects

func GetProjects() []Project

GetProjects retrieves the list of configured projects from the config file.

type ProjectRepo

type ProjectRepo struct {
	URL  string `mapstructure:"url"`
	Path string `mapstructure:"path,omitempty"` // Optional, defaults to repo name from URL
}

ProjectRepo represents a single repository within a project.

func (*ProjectRepo) GetEffectivePath

func (r *ProjectRepo) GetEffectivePath() (string, error)

GetEffectivePath returns the effective path for a git. If Path is set, it uses that; otherwise, it derives from the URL.

type PromptProxyValuesFunc added in v1.15.0

type PromptProxyValuesFunc func(initialTitle, initialValue, initialNoProxy string) (title, value, noProxy string, err error)

PromptProxyValuesFunc defines the function type for prompting for proxy values.

type ProxyConfig

type ProxyConfig struct {
	Title   string
	Value   string
	Enabled bool
	NoProxy string
}

ProxyConfig represents a single proxy configuration.

func AddOrUpdateProxy

func AddOrUpdateProxy() ([]ProxyConfig, int)

AddOrUpdateProxy adds a new proxy or updates an existing one.

func AddOrUpdateProxyWithValues

func AddOrUpdateProxyWithValues(title, value, noProxy string) ([]ProxyConfig, int, error)

AddOrUpdateProxyWithValues adds or updates a proxy using provided values (non-interactive). Returns updated proxies, the affected index, or an error.

func EnableProxy

func EnableProxy(index int, proxies []ProxyConfig) ([]ProxyConfig, error)

EnableProxy enables the proxy at the given index and disables all others.

func GetProxyConfigs

func GetProxyConfigs() ([]ProxyConfig, int)

GetProxyConfigs checks for proxy settings in the configuration and returns the current proxies and the index of the active proxy (-1 if none are active).

func RemoveProxy added in v1.29.0

func RemoveProxy(index int) ([]ProxyConfig, error)

RemoveProxy removes the proxy configuration at the specified index.

type SaveProxyConfigsFunc

type SaveProxyConfigsFunc func(proxies []ProxyConfig) error

SaveProxyConfigsFunc defines the function type for saving proxy configs.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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