Documentation
¶
Index ¶
- Constants
- func AddLogin(login *Login) error
- func DeleteLogin(name string) error
- func DeleteOAuthToken(loginName string) error
- func GetConfigPath() string
- func LoadOAuthToken(loginName string) (*credstore.Token, error)
- func SaveLoginTokens(login *Login) error
- func SaveOAuthToken(loginName, accessToken, refreshToken string, expiresAt time.Time) error
- func SaveOAuthTokenFromOAuth2(loginName string, token *oauth2.Token, login *Login) error
- func SetConfigForTesting(cfg LocalConfig)
- func SetConfigPathForTesting(path string)
- func SetDefaultLogin(name string) error
- type FlagDefaults
- type LocalConfig
- type Login
- func (l *Login) Client(options ...gitea.ClientOption) *gitea.Client
- func (l *Login) GetAccessToken() string
- func (l *Login) GetRefreshToken() string
- func (l *Login) GetSSHHost() string
- func (l *Login) GetTokenExpiry() time.Time
- func (l *Login) IsOAuth() bool
- func (l *Login) RefreshOAuthToken() error
- func (l *Login) RefreshOAuthTokenIfNeeded() error
- type OAuthToken
- type Preferences
Constants ¶
const AuthMethodOAuth = "oauth"
AuthMethodOAuth marks a login as using OAuth with secure credential storage.
const DefaultClientID = "d57cb8c4-630c-4168-8324-ec79935e18d4"
DefaultClientID is the default OAuth2 client ID included in most Gitea instances
const ( // LockTimeout is the default timeout for acquiring the config file lock. LockTimeout = 5 * time.Second )
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 DeleteLogin ¶
DeleteLogin delete a login by name from config
func DeleteOAuthToken ¶ added in v0.13.0
DeleteOAuthToken removes tokens from the secure store.
func LoadOAuthToken ¶ added in v0.13.0
LoadOAuthToken loads OAuth tokens from the secure store.
func SaveLoginTokens ¶ added in v0.12.0
SaveLoginTokens updates the token fields for an existing login. This is used after browser-based re-authentication to save new tokens.
func SaveOAuthToken ¶ added in v0.13.0
SaveOAuthToken saves OAuth tokens to the secure store.
func SaveOAuthTokenFromOAuth2 ¶ added in v0.13.0
SaveOAuthTokenFromOAuth2 saves an oauth2.Token to credstore, falling back to the existing login's values for empty refresh token or zero expiry.
func SetConfigForTesting ¶ added in v0.12.0
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 ¶ added in v0.13.0
func SetConfigPathForTesting(path string)
SetConfigPathForTesting overrides the config path used by helpers in tests.
func SetDefaultLogin ¶
SetDefaultLogin set the default login by name (case insensitive)
Types ¶
type FlagDefaults ¶ added in v0.9.0
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 ¶
GetDefaultLogin return the default login
func GetLoginByHost ¶ added in v0.9.0
GetLoginByHost finds a login by it's server URL
func GetLoginByName ¶
GetLoginByName get login by name (case insensitive)
func GetLoginsByHost ¶ added in v0.12.0
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 ¶ added in v0.13.0
GetAccessToken returns the effective access token. For OAuth logins, reads from credstore. For others, returns l.Token directly.
func (*Login) GetRefreshToken ¶ added in v0.13.0
GetRefreshToken returns the refresh token.
func (*Login) GetTokenExpiry ¶ added in v0.13.0
GetTokenExpiry returns the token expiry time.
func (*Login) IsOAuth ¶ added in v0.13.0
IsOAuth returns true if this login uses OAuth with secure credential storage.
func (*Login) RefreshOAuthToken ¶ added in v0.12.0
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 ¶ added in v0.12.0
RefreshOAuthTokenIfNeeded refreshes the OAuth token if it's expired or near expiry. Returns nil without doing anything if no refresh is needed.
type OAuthToken ¶ added in v0.13.0
OAuthToken holds the token fields loaded from credstore.
type Preferences ¶ added in v0.9.0
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 ¶ added in v0.9.0
func GetPreferences() Preferences
GetPreferences returns preferences based on the config file