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 }) }