config

package
v0.14.2 Latest Latest
Warning

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

Go to latest
Published: Jun 24, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const AuthMethodOAuth = "oauth"

AuthMethodOAuth marks a login as using OAuth with secure credential storage.

View Source
const DefaultClientID = "d57cb8c4-630c-4168-8324-ec79935e18d4"

DefaultClientID is the default OAuth2 client ID included in most Gitea instances

View Source
const (
	// LockTimeout is the default timeout for acquiring the config file lock.
	LockTimeout = 5 * time.Second
)
View Source
const TokenRefreshThreshold = 5 * time.Minute

TokenRefreshThreshold is how far before expiry we should refresh OAuth tokens. This is used by config.Login.Client() for automatic token refresh.

Variables

This section is empty.

Functions

func AcquireConfigLockForTesting

func AcquireConfigLockForTesting(lockPath string, timeout time.Duration) (func() error, error)

AcquireConfigLockForTesting exposes the internal lock helper to integration tests.

func AddLogin

func AddLogin(login *Login) error

AddLogin save a login to config

func DeleteLogin

func DeleteLogin(name string) error

DeleteLogin delete a login by name from config

func DeleteOAuthToken

func DeleteOAuthToken(loginName string) error

DeleteOAuthToken removes tokens from the secure store.

func GetConfigPath

func GetConfigPath() string

GetConfigPath return path to tea config file

func LoadOAuthToken

func LoadOAuthToken(loginName string) (*credstore.Token, error)

LoadOAuthToken loads OAuth tokens from the secure store.

func SaveLoginTokens

func SaveLoginTokens(login *Login) error

SaveLoginTokens updates the token fields for an existing login. This is used after browser-based re-authentication to save new tokens.

func SaveOAuthToken

func SaveOAuthToken(loginName, accessToken, refreshToken string, expiresAt time.Time) error

SaveOAuthToken saves OAuth tokens to the secure store.

func SaveOAuthTokenFromOAuth2

func SaveOAuthTokenFromOAuth2(loginName string, token *oauth2.Token, login *Login) error

SaveOAuthTokenFromOAuth2 saves an oauth2.Token to credstore, falling back to the existing login's values for empty refresh token or zero expiry.

func SetConfigForTesting

func SetConfigForTesting(cfg LocalConfig)

SetConfigForTesting replaces the in-memory config and marks it as loaded. This allows tests to inject config without relying on file-based loading.

func SetConfigPathForTesting

func SetConfigPathForTesting(path string)

SetConfigPathForTesting overrides the config path used by helpers in tests.

func SetDefaultLogin

func SetDefaultLogin(name string) error

SetDefaultLogin set the default login by name (case insensitive)

Types

type FlagDefaults

type FlagDefaults struct {
	// Prefer a specific git remote to use for selecting a repository on gitea,
	// instead of relying on the remote associated with main/master/trunk branch.
	// The --remote flag still has precedence over this value.
	Remote string `yaml:"remote"`
}

FlagDefaults defines all flags that can be overridden with a default value via the config file

type LocalConfig

type LocalConfig struct {
	Logins []Login     `yaml:"logins"`
	Prefs  Preferences `yaml:"preferences"`
}

LocalConfig represents local configurations

type Login

type Login struct {
	Name    string `yaml:"name"`
	URL     string `yaml:"url"`
	Token   string `yaml:"token,omitempty"`
	Default bool   `yaml:"default"`
	SSHHost string `yaml:"ssh_host"`
	// optional path to the private key
	SSHKey            string `yaml:"ssh_key"`
	Insecure          bool   `yaml:"insecure"`
	SSHCertPrincipal  string `yaml:"ssh_certificate_principal"`
	SSHAgent          bool   `yaml:"ssh_agent"`
	SSHKeyFingerprint string `yaml:"ssh_key_agent_pub"`
	SSHPassphrase     string `yaml:"-"`
	VersionCheck      bool   `yaml:"version_check"`
	// User is username from gitea
	User string `yaml:"user"`
	// Created is auto created unix timestamp
	Created int64 `yaml:"created"`
	// AuthMethod indicates the authentication method ("oauth" for OAuth with credstore)
	AuthMethod string `yaml:"auth_method,omitempty"`
	// RefreshToken is used to renew the access token when it expires
	RefreshToken string `yaml:"refresh_token,omitempty"`
	// TokenExpiry is when the token expires (unix timestamp)
	TokenExpiry int64 `yaml:"token_expiry,omitempty"`
}

Login represents a login to a gitea server, you even could add multiple logins for one gitea server

func GetDefaultLogin

func GetDefaultLogin() (*Login, error)

GetDefaultLogin return the default login

func GetLoginByHost

func GetLoginByHost(host string) (*Login, error)

GetLoginByHost finds a login by its server URL

func GetLoginByName

func GetLoginByName(name string) (*Login, error)

GetLoginByName get login by name (case insensitive)

func GetLoginByToken

func GetLoginByToken(token string) (*Login, error)

GetLoginByToken get login by token

func GetLogins

func GetLogins() ([]Login, error)

GetLogins return all login available by config

func GetLoginsByHost

func GetLoginsByHost(host string) ([]*Login, error)

GetLoginsByHost returns all logins matching a host

func (*Login) Client

func (l *Login) Client(options ...gitea.ClientOption) *gitea.Client

Client returns a client to operate Gitea API. You may provide additional modifiers for the client like gitea.SetBasicAuth() for customization

func (*Login) GetAccessToken

func (l *Login) GetAccessToken() string

GetAccessToken returns the effective access token. For OAuth logins, reads from credstore. For others, returns l.Token directly.

func (*Login) GetRefreshToken

func (l *Login) GetRefreshToken() string

GetRefreshToken returns the refresh token.

func (*Login) GetSSHHost

func (l *Login) GetSSHHost() string

GetSSHHost returns SSH host name

func (*Login) GetTokenExpiry

func (l *Login) GetTokenExpiry() time.Time

GetTokenExpiry returns the token expiry time.

func (*Login) IsOAuth

func (l *Login) IsOAuth() bool

IsOAuth returns true if this login uses OAuth with secure credential storage.

func (*Login) RefreshOAuthToken

func (l *Login) RefreshOAuthToken() error

RefreshOAuthToken refreshes the OAuth access token using the refresh token. It updates the login with new token information and saves it to config. Uses double-checked locking to avoid unnecessary refresh calls when multiple processes race to refresh the same token.

func (*Login) RefreshOAuthTokenIfNeeded

func (l *Login) RefreshOAuthTokenIfNeeded() error

RefreshOAuthTokenIfNeeded refreshes the OAuth token if it's expired or near expiry. Returns nil without doing anything if no refresh is needed.

type OAuthToken

type OAuthToken struct {
	AccessToken  string
	RefreshToken string
	ExpiresAt    time.Time
}

OAuthToken holds the token fields loaded from credstore.

type Preferences

type Preferences struct {
	// Prefer using an external text editor over inline multiline prompts
	Editor       bool         `yaml:"editor"`
	FlagDefaults FlagDefaults `yaml:"flag_defaults"`
}

Preferences that are stored in and read from the config file

func GetPreferences

func GetPreferences() Preferences

GetPreferences returns preferences based on the config file

Jump to

Keyboard shortcuts

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