buildr/internal/vault/options.go
Peter 1261932bdc
All checks were successful
continuous-integration/drone/push Build is passing
refactor: apply golangci-lint findings
2023-06-22 19:16:00 +02:00

56 lines
981 B
Go

package vault
import (
"encoding/json"
"os"
)
func WithPassphrase(passphrase string) InitOption {
return initOptionFunc(func(vault *Vault) error {
vault.passphrase = passphrase
return nil
})
}
func WithPassphraseFile(path string) InitOption {
return initOptionFunc(func(vault *Vault) error {
passphrase, err := os.ReadFile(path)
if err != nil {
return err
}
vault.passphrase = string(passphrase)
return nil
})
}
func WithLoadFromPath(path string) InitOption {
return initOptionFunc(func(vault *Vault) error {
vaultFile, err := os.Open(path)
if err != nil {
if os.IsNotExist(err) {
return nil
}
return err
}
defer func() {
_ = vaultFile.Close()
}()
dec := json.NewDecoder(vaultFile)
if err := dec.Decode(vault); err != nil {
return err
}
return nil
})
}
func WithEncryption(encryption Encryption) InitOption {
return initOptionFunc(func(vault *Vault) error {
vault.encryption = encryption
return nil
})
}