Skip to content

Commit

Permalink
Merge pull request #5553 from thaJeztah/login_idempotent
Browse files Browse the repository at this point in the history
cli/config/credentials: skip saving config-file if credentials didn't change
  • Loading branch information
vvoland authored Oct 21, 2024
2 parents 24ee5f2 + d3f6867 commit d2b87a0
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion cli/config/credentials/file_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ func NewFileStore(file store) Store {

// Erase removes the given credentials from the file store.
func (c *fileStore) Erase(serverAddress string) error {
if _, exists := c.file.GetAuthConfigs()[serverAddress]; !exists {
// nothing to do; no credentials found for the given serverAddress
return nil
}
delete(c.file.GetAuthConfigs(), serverAddress)
return c.file.Save()
}
Expand Down Expand Up @@ -70,9 +74,14 @@ https://docs.docker.com/go/credential-store/
// CLI invocation (no need to warn the user multiple times per command).
var alreadyPrinted atomic.Bool

// Store saves the given credentials in the file store.
// Store saves the given credentials in the file store. This function is
// idempotent and does not update the file if credentials did not change.
func (c *fileStore) Store(authConfig types.AuthConfig) error {
authConfigs := c.file.GetAuthConfigs()
if oldAuthConfig, ok := authConfigs[authConfig.ServerAddress]; ok && oldAuthConfig == authConfig {
// Credentials didn't change, so skip updating the configuration file.
return nil
}
authConfigs[authConfig.ServerAddress] = authConfig
if err := c.file.Save(); err != nil {
return err
Expand Down

0 comments on commit d2b87a0

Please sign in to comment.