buildr/internal/vault/options.go

56 lines
981 B
Go
Raw Permalink Normal View History

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)
2023-06-22 16:06:56 +00:00
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
})
}