refactor generate functions for single generation

This commit is contained in:
Apfelwurm 2025-03-21 09:25:39 +01:00
parent d3c9c39f13
commit b7d957877a

View File

@ -47,24 +47,24 @@ type Secret struct {
RemoteName string
}
// GeneratePasswords generates passwords.
func GeneratePasswords(length uint, charset string) ([]string, error) {
// GeneratePassword generates passwords.
func GeneratePassword(length uint, charset string) (string, error) {
passwords, err := passgen.GeneratePasswords(
1,
length,
charset,
)
if err != nil {
return nil, err
return "", err
}
log.Debugf("generated %s", strings.Join(passwords, ", "))
return passwords, nil
return passwords[0], nil
}
// GeneratePassphrases generates human readable and rememberable passphrases.
func GeneratePassphrases() ([]string, error) {
// GeneratePassphrase generates human readable and rememberable passphrases.
func GeneratePassphrase() (string, error) {
passphrases, err := passgen.GeneratePassphrases(
1,
passgen.PassphraseWordCountDefault,
@ -73,12 +73,12 @@ func GeneratePassphrases() ([]string, error) {
passgen.WordListDefault,
)
if err != nil {
return nil, err
return "", err
}
log.Debugf("generated %s", strings.Join(passphrases, ", "))
return passphrases, nil
return passphrases[0], nil
}
// ReadSecretsConfig reads secret names/versions from the recipe config. The
@ -195,13 +195,13 @@ func GenerateSecrets(cl *dockerClient.Client, secrets map[string]Secret, server
log.Debugf("attempting to generate and store %s on %s", secret.RemoteName, server)
if secret.Length > 0 {
passwords, err := GeneratePasswords(uint(secret.Length), secret.Charset)
password, err := GeneratePassword(uint(secret.Length), secret.Charset)
if err != nil {
ch <- err
return
}
if err := client.StoreSecret(cl, secret.RemoteName, passwords[0], server); err != nil {
if err := client.StoreSecret(cl, secret.RemoteName, password, server); err != nil {
if strings.Contains(err.Error(), "AlreadyExists") {
log.Warnf("%s already exists", secret.RemoteName)
ch <- nil
@ -213,15 +213,15 @@ func GenerateSecrets(cl *dockerClient.Client, secrets map[string]Secret, server
mutex.Lock()
defer mutex.Unlock()
secretsGenerated[secretName] = passwords[0]
secretsGenerated[secretName] = password
} else {
passphrases, err := GeneratePassphrases()
passphrase, err := GeneratePassphrase()
if err != nil {
ch <- err
return
}
if err := client.StoreSecret(cl, secret.RemoteName, passphrases[0], server); err != nil {
if err := client.StoreSecret(cl, secret.RemoteName, passphrase, server); err != nil {
if strings.Contains(err.Error(), "AlreadyExists") {
log.Warnf("%s already exists", secret.RemoteName)
ch <- nil
@ -233,7 +233,7 @@ func GenerateSecrets(cl *dockerClient.Client, secrets map[string]Secret, server
mutex.Lock()
defer mutex.Unlock()
secretsGenerated[secretName] = passphrases[0]
secretsGenerated[secretName] = passphrase
}
ch <- nil
}(n, v)