@@ -23,6 +23,7 @@ import (
2323 "os"
2424 "path/filepath"
2525 "strings"
26+ "sync"
2627
2728 "github.com/sirupsen/logrus"
2829 "github.com/zalando/go-keyring"
@@ -35,10 +36,12 @@ type KeyringProvider interface {
3536}
3637
3738var keyringProvider KeyringProvider
39+ var keyringProviderOnce sync.Once
3840
39- func init () {
40- // Initialize with the appropriate provider
41- keyringProvider = GetKeyringProvider ()
41+ func ensureKeyringProvider () {
42+ keyringProviderOnce .Do (func () {
43+ keyringProvider = GetKeyringProvider ()
44+ })
4245}
4346
4447type SystemKeyring struct {}
@@ -162,6 +165,7 @@ const KeyringService = "harbor-cli"
162165const KeyringUser = "harbor-cli-encryption-key"
163166
164167func GenerateEncryptionKey () error {
168+ ensureKeyringProvider ()
165169 existingKey , err := keyringProvider .Get (KeyringService , KeyringUser )
166170 if err == nil && existingKey != "" {
167171 return nil
@@ -175,6 +179,7 @@ func GenerateEncryptionKey() error {
175179}
176180
177181func GetEncryptionKey () ([]byte , error ) {
182+ ensureKeyringProvider ()
178183 keyBase64 , err := keyringProvider .Get (KeyringService , KeyringUser )
179184 if err != nil || keyBase64 == "" {
180185 // Attempt to generate a new key if not found
0 commit comments