Documentation
¶
Index ¶
- Variables
- func GetToken(ctx context.Context) string
- func GetUUID(ctx context.Context) string
- func GetVersion(ctx context.Context) string
- func InvalidateToken(token string)
- func IsDockerDesktopRunning(ctx context.Context) bool
- func IsWSL() bool
- func SecretsEngineError() error
- type DockerDesktopPaths
- type DockerHubInfo
- type RawClient
- type Source
Constants ¶
This section is empty.
Variables ¶
var ClientBackend = newRawClient(dialBackend)
var Paths = sync.OnceValue(func() DockerDesktopPaths { desktopPaths, err := getDockerDesktopPaths() if err != nil { panic(err) } return desktopPaths })
Functions ¶
func GetVersion ¶ added in v1.60.0
GetVersion returns the running Docker Desktop version (e.g. "4.74.0") or an empty string if Docker Desktop is not running or the call fails.
The lookup is bounded by a short internal timeout so a stale or missing backend socket cannot stall callers on hot paths (it is queried on every outbound built-in tool HTTP request). ctx is used for the underlying HTTP call on a cache miss; on a cache hit the cached value is returned without consulting ctx.
func InvalidateToken ¶ added in v1.125.0
func InvalidateToken(token string)
InvalidateToken forgets token, everywhere it may be cached, so the next GetToken fetches or mints a new one. Called when Docker rejects a token we believed to be valid: only the issuer knows for sure.
func IsDockerDesktopRunning ¶
func SecretsEngineError ¶ added in v1.153.0
func SecretsEngineError() error
SecretsEngineError returns the last lookup error, or a timeout error while a lookup is still running.
Types ¶
type DockerDesktopPaths ¶
type DockerHubInfo ¶
func GetUserInfo ¶
func GetUserInfo(ctx context.Context) DockerHubInfo
GetUserInfo returns the secrets engine's account, else Docker Desktop's, else the token's.
type Source ¶ added in v1.125.0
type Source string
Source says where a token came from, for diagnostics.
func GetTokenWithSource ¶ added in v1.125.0
GetTokenWithSource returns the user's Docker access token and where it came from. The secrets engine's session comes first; without a usable one we ask Docker Desktop's backend. Docker Desktop's newer auth stack (auth v2) serves whatever its in-memory token source holds and never refreshes on GET, so a stuck background refresher makes it return the same expired JWT forever — or nothing at all when its read-time refresh failed. When that happens we mint a token ourselves from the access token `docker login` stored, and only then fall back to nudging Desktop.