commit a1294fc22219ed4c69ffd37adbc2a55271a944bb
parent 156c8c824520d6122badc1eeed441fcc7c1c5677
Author: Sean Enck <sean@ttypty.com>
Date: Mon, 9 Dec 2024 18:37:46 -0500
cleaning up string/array mismatch, now it can't be mismatched
Diffstat:
8 files changed, 227 insertions(+), 205 deletions(-)
diff --git a/internal/app/pwgen.go b/internal/app/pwgen.go
@@ -31,7 +31,7 @@ func GeneratePassword(cmd CommandOptions) error {
return fmt.Errorf("word count must be >= 1")
}
tmplString := config.EnvPasswordGenTemplate.Get()
- wordList := config.EnvPasswordGenWordList.AsArray()
+ wordList := config.EnvPasswordGenWordList.Get()
if len(wordList) == 0 {
return errors.New("word list command must set")
}
diff --git a/internal/app/totp.go b/internal/app/totp.go
@@ -79,7 +79,7 @@ func clearFunc() {
}
func colorWhenRules() ([]util.TimeWindow, error) {
- envTime := config.EnvTOTPColorBetween.AsArray()
+ envTime := config.EnvTOTPColorBetween.Get()
if slices.Compare(envTime, config.TOTPDefaultBetween) == 0 {
return config.TOTPDefaultColorWindow, nil
}
diff --git a/internal/config/core.go b/internal/config/core.go
@@ -38,7 +38,6 @@ const (
const (
canDefaultFlag = iota
canExpandFlag
- isArrayFlag
isCommandFlag
)
diff --git a/internal/config/env.go b/internal/config/env.go
@@ -19,6 +19,11 @@ type (
environmentBase
value T
}
+ environmentStrings struct {
+ environmentDefault[string]
+ flags []stringsFlags
+ allowed []string
+ }
// EnvironmentInt are environment settings that are integers
EnvironmentInt struct {
environmentDefault[int]
@@ -29,18 +34,20 @@ type (
EnvironmentBool struct {
environmentDefault[bool]
}
- // EnvironmentStrings are string-based settings
- EnvironmentStrings struct {
- environmentDefault[string]
- flags []stringsFlags
- allowed []string
- }
// EnvironmentFormatter allows for sending a string into a get request
EnvironmentFormatter struct {
environmentBase
allowed string
fxn func(string, string) string
}
+ // EnvironmentString represents a string variable
+ EnvironmentString struct {
+ environmentStrings
+ }
+ // EnvironmentArray is an array of strings variable
+ EnvironmentArray struct {
+ environmentStrings
+ }
metaData struct {
value string
allowed []string
@@ -87,20 +94,20 @@ func (e EnvironmentInt) Get() (int64, error) {
}
// Get will read the string from the environment
-func (e EnvironmentStrings) Get() string {
- return stringsGet(e, store.GetString, func(val string) string {
+func (e EnvironmentString) Get() string {
+ return stringsGet(e.environmentStrings, store.GetString, func(val string) string {
return val
})
}
-// AsArray indicates the item should be queried as an array
-func (e EnvironmentStrings) AsArray() []string {
- return stringsGet(e, store.GetArray, func(val string) []string {
+// Get indicates the item should be queried as an array
+func (e EnvironmentArray) Get() []string {
+ return stringsGet(e.environmentStrings, store.GetArray, func(val string) []string {
return strings.Split(val, arrayDelimiter)
})
}
-func stringsGet[T string | []string](e EnvironmentStrings, getter func(string) (T, bool), conv func(string) T) T {
+func stringsGet[T string | []string](e environmentStrings, getter func(string) (T, bool), conv func(string) T) T {
val, ok := getter(e.Key())
if !ok {
flags := e.flattenFlags()
@@ -116,7 +123,15 @@ func (e EnvironmentFormatter) Get(value string) string {
return e.fxn(e.Key(), value)
}
-func (e EnvironmentStrings) display() metaData {
+func (e EnvironmentArray) display() metaData {
+ return e.environmentStrings.display(true)
+}
+
+func (e EnvironmentString) display() metaData {
+ return e.environmentStrings.display(false)
+}
+
+func (e environmentStrings) display(isArray bool) metaData {
var t tomlType
t = tomlString
v := "\"\""
@@ -124,7 +139,7 @@ func (e EnvironmentStrings) display() metaData {
value := e.value
flags := e.flattenFlags()
canExpand := slices.Contains(flags, canExpandFlag)
- if slices.Contains(flags, isArrayFlag) {
+ if isArray {
t = tomlArray
v = "[]"
if slices.Contains(flags, isCommandFlag) {
@@ -183,10 +198,10 @@ func (e EnvironmentFormatter) display() metaData {
}
}
-func (e EnvironmentStrings) flattenFlags() []stringsFlags {
+func (e environmentStrings) flattenFlags() []stringsFlags {
flags := e.flags
if slices.Contains(e.flags, isCommandFlag) {
- flags = append(flags, canExpandFlag, isArrayFlag)
+ flags = append(flags, canExpandFlag)
}
return flags
}
diff --git a/internal/config/key.go b/internal/config/key.go
@@ -55,7 +55,7 @@ func NewKey(defaultKeyModeType KeyModeType) (Key, error) {
default:
return Key{}, fmt.Errorf("unknown key mode: %s", keyMode)
}
- useKey := envPassword.AsArray()
+ useKey := envPassword.Get()
isEmpty := len(useKey) == 0
if !isEmpty {
if strings.TrimSpace(useKey[0]) == "" {
diff --git a/internal/config/vars.go b/internal/config/vars.go
@@ -12,103 +12,93 @@ import (
var (
// EnvClipTimeout gets the maximum clipboard time
- EnvClipTimeout = environmentRegister(
- EnvironmentInt{
- environmentDefault: newDefaultedEnvironment(45,
- environmentBase{
- key: clipCategory + "TIMEOUT",
- description: "Override the amount of time before totp clears the clipboard (seconds).",
- }),
- short: "clipboard max time",
- })
+ EnvClipTimeout = environmentRegister(EnvironmentInt{
+ environmentDefault: newDefaultedEnvironment(45,
+ environmentBase{
+ key: clipCategory + "TIMEOUT",
+ description: "Override the amount of time before totp clears the clipboard (seconds).",
+ }),
+ short: "clipboard max time",
+ })
// EnvJSONHashLength handles the hashing output length
- EnvJSONHashLength = environmentRegister(
- EnvironmentInt{
- environmentDefault: newDefaultedEnvironment(0,
- environmentBase{
- key: jsonCategory + "HASH_LENGTH",
- description: fmt.Sprintf("Maximum string length of the JSON value when '%s' mode is set for JSON output.", output.JSONModes.Hash),
- }),
- short: "hash length",
- canZero: true,
- })
+ EnvJSONHashLength = environmentRegister(EnvironmentInt{
+ environmentDefault: newDefaultedEnvironment(0,
+ environmentBase{
+ key: jsonCategory + "HASH_LENGTH",
+ description: fmt.Sprintf("Maximum string length of the JSON value when '%s' mode is set for JSON output.", output.JSONModes.Hash),
+ }),
+ short: "hash length",
+ canZero: true,
+ })
// EnvClipOSC52 indicates if OSC52 clipboard mode is enabled
- EnvClipOSC52 = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(false,
- environmentBase{
- key: clipCategory + "OSC52",
- description: "Enable OSC52 clipboard mode.",
- }),
- })
+ EnvClipOSC52 = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(false,
+ environmentBase{
+ key: clipCategory + "OSC52",
+ description: "Enable OSC52 clipboard mode.",
+ }),
+ })
// EnvTOTPEnabled indicates if TOTP is allowed
- EnvTOTPEnabled = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(true,
- environmentBase{
- key: totpCategory + "ENABLED",
- description: "Enable TOTP integrations.",
- }),
- })
+ EnvTOTPEnabled = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(true,
+ environmentBase{
+ key: totpCategory + "ENABLED",
+ description: "Enable TOTP integrations.",
+ }),
+ })
// EnvReadOnly indicates if in read-only mode
- EnvReadOnly = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(false,
- environmentBase{
- key: "READONLY",
- description: "Operate in readonly mode.",
- }),
- })
+ EnvReadOnly = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(false,
+ environmentBase{
+ key: "READONLY",
+ description: "Operate in readonly mode.",
+ }),
+ })
// EnvClipEnabled indicates if clipboard is enabled
- EnvClipEnabled = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(true,
- environmentBase{
- key: clipCategory + "ENABLED",
- description: "Enable clipboard operations.",
- }),
- })
+ EnvClipEnabled = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(true,
+ environmentBase{
+ key: clipCategory + "ENABLED",
+ description: "Enable clipboard operations.",
+ }),
+ })
// EnvColorEnabled indicates if colors are enabled
- EnvColorEnabled = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(true,
- environmentBase{
- key: "COLOR_ENABLED",
- description: "Enable terminal colors.",
- }),
- })
+ EnvColorEnabled = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(true,
+ environmentBase{
+ key: "COLOR_ENABLED",
+ description: "Enable terminal colors.",
+ }),
+ })
// EnvHooksEnabled indicates if hooks are enabled
- EnvHooksEnabled = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(true,
- environmentBase{
- key: hookCategory + "ENABLED",
- description: "Enable hooks",
- }),
- })
+ EnvHooksEnabled = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(true,
+ environmentBase{
+ key: hookCategory + "ENABLED",
+ description: "Enable hooks",
+ }),
+ })
// EnvInteractive indicates if operating in interactive mode
- EnvInteractive = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(true,
- environmentBase{
- key: "INTERACTIVE",
- description: "Enable interactive mode.",
- }),
- })
+ EnvInteractive = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(true,
+ environmentBase{
+ key: "INTERACTIVE",
+ description: "Enable interactive mode.",
+ }),
+ })
// EnvTOTPTimeout indicates when TOTP display should timeout
- EnvTOTPTimeout = environmentRegister(
- EnvironmentInt{
- environmentDefault: newDefaultedEnvironment(120,
- environmentBase{
- key: totpCategory + "TIMEOUT",
- description: "Time, in seconds, to show a TOTP token before automatically exiting.",
- }),
- short: "max totp time",
- canZero: false,
- })
+ EnvTOTPTimeout = environmentRegister(EnvironmentInt{
+ environmentDefault: newDefaultedEnvironment(120,
+ environmentBase{
+ key: totpCategory + "TIMEOUT",
+ description: "Time, in seconds, to show a TOTP token before automatically exiting.",
+ }),
+ short: "max totp time",
+ canZero: false,
+ })
// EnvTOTPEntry is the leaf token to use to store TOTP tokens
- EnvTOTPEntry = environmentRegister(
- EnvironmentStrings{
+ EnvTOTPEntry = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("totp",
environmentBase{
key: totpCategory + "ENTRY",
@@ -116,20 +106,22 @@ var (
}),
allowed: []string{"<string>"},
flags: []stringsFlags{canDefaultFlag},
- })
+ },
+ })
// EnvPlatform is the platform that the application is running on
- EnvPlatform = environmentRegister(
- EnvironmentStrings{
+ EnvPlatform = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment(detectedValue,
environmentBase{
key: "PLATFORM",
description: "Override the detected platform.",
}),
allowed: platform.Systems.List(),
- })
+ },
+ })
// EnvStore is the location of the keepass file/store
- EnvStore = environmentRegister(
- EnvironmentStrings{
+ EnvStore = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("",
environmentBase{
key: "STORE",
@@ -138,10 +130,11 @@ var (
}),
allowed: []string{fileExample},
flags: []stringsFlags{canExpandFlag},
- })
+ },
+ })
// EnvHookDir is the directory of hooks to execute
- EnvHookDir = environmentRegister(
- EnvironmentStrings{
+ EnvHookDir = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("",
environmentBase{
key: hookCategory + "DIRECTORY",
@@ -149,40 +142,46 @@ var (
}),
allowed: []string{"<directory>"},
flags: []stringsFlags{canDefaultFlag, canExpandFlag},
- })
+ },
+ })
// EnvClipCopy allows overriding the clipboard copy command
- EnvClipCopy = environmentRegister(EnvironmentStrings{
- environmentDefault: newDefaultedEnvironment("",
- environmentBase{
- key: clipCategory + "COPY_COMMAND",
- description: "Override the detected platform copy command.",
- }),
- flags: []stringsFlags{isCommandFlag},
+ EnvClipCopy = environmentRegister(EnvironmentArray{
+ environmentStrings: environmentStrings{
+ environmentDefault: newDefaultedEnvironment("",
+ environmentBase{
+ key: clipCategory + "COPY_COMMAND",
+ description: "Override the detected platform copy command.",
+ }),
+ flags: []stringsFlags{isCommandFlag},
+ },
})
// EnvClipPaste allows overriding the clipboard paste command
- EnvClipPaste = environmentRegister(EnvironmentStrings{
- environmentDefault: newDefaultedEnvironment("",
- environmentBase{
- key: clipCategory + "PASTE_COMMAND",
- description: "Override the detected platform paste command.",
- }),
- flags: []stringsFlags{isCommandFlag},
+ EnvClipPaste = environmentRegister(EnvironmentArray{
+ environmentStrings: environmentStrings{
+ environmentDefault: newDefaultedEnvironment("",
+ environmentBase{
+ key: clipCategory + "PASTE_COMMAND",
+ description: "Override the detected platform paste command.",
+ }),
+ flags: []stringsFlags{isCommandFlag},
+ },
})
// EnvTOTPColorBetween handles terminal coloring for TOTP windows (seconds)
- EnvTOTPColorBetween = environmentRegister(
- EnvironmentStrings{
+ EnvTOTPColorBetween = environmentRegister(EnvironmentArray{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment(strings.Join(TOTPDefaultBetween, arrayDelimiter),
environmentBase{
key: totpCategory + "COLOR_WINDOWS",
description: fmt.Sprintf(`Override when to set totp generated outputs to different colors,
must be a list of one (or more) rules where a '%s' delimits the start and end second (0-60 for each).`, util.TimeWindowSpan),
}),
- flags: []stringsFlags{isArrayFlag, canDefaultFlag},
+ flags: []stringsFlags{canDefaultFlag},
allowed: exampleColorWindows,
- })
+ },
+ })
// EnvKeyFile is an keyfile for the database
- EnvKeyFile = environmentRegister(
- EnvironmentStrings{
+ EnvKeyFile = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("",
environmentBase{
key: credsCategory + "KEY_FILE",
@@ -191,10 +190,11 @@ must be a list of one (or more) rules where a '%s' delimits the start and end se
}),
allowed: []string{"keyfile"},
flags: []stringsFlags{canDefaultFlag, canExpandFlag},
- })
+ },
+ })
// EnvDefaultModTime is modtime override ability for entries
- EnvDefaultModTime = environmentRegister(
- EnvironmentStrings{
+ EnvDefaultModTime = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("",
environmentBase{
key: defaultCategory + "MODTIME",
@@ -202,10 +202,11 @@ must be a list of one (or more) rules where a '%s' delimits the start and end se
}),
flags: []stringsFlags{canDefaultFlag},
allowed: []string{"modtime"},
- })
+ },
+ })
// EnvJSONMode controls how JSON is output in the 'data' field
- EnvJSONMode = environmentRegister(
- EnvironmentStrings{
+ EnvJSONMode = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment(string(output.JSONModes.Hash),
environmentBase{
key: jsonCategory + "MODE",
@@ -213,15 +214,18 @@ must be a list of one (or more) rules where a '%s' delimits the start and end se
}),
flags: []stringsFlags{canDefaultFlag},
allowed: output.JSONModes.List(),
- })
+ },
+ })
// EnvTOTPFormat supports formatting the TOTP tokens for generation of tokens
- EnvTOTPFormat = environmentRegister(EnvironmentFormatter{environmentBase: environmentBase{
- key: totpCategory + "OTP_FORMAT",
- description: "Override the otpauth url used to store totp tokens. It must have ONE format string ('%s') to insert the totp base code.",
- }, fxn: formatterTOTP, allowed: "otpauth//url/%s/args..."})
+ EnvTOTPFormat = environmentRegister(EnvironmentFormatter{
+ environmentBase: environmentBase{
+ key: totpCategory + "OTP_FORMAT",
+ description: "Override the otpauth url used to store totp tokens. It must have ONE format string ('%s') to insert the totp base code.",
+ }, fxn: formatterTOTP, allowed: "otpauth//url/%s/args...",
+ })
// EnvPasswordMode indicates how the password is read
- EnvPasswordMode = environmentRegister(
- EnvironmentStrings{
+ EnvPasswordMode = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment(string(DefaultKeyMode),
environmentBase{
key: credsCategory + "PASSWORD_MODE",
@@ -231,9 +235,10 @@ Set to '%s' to ignore the set key value`, noKeyMode, IgnoreKeyMode),
}),
allowed: []string{string(AskKeyMode), string(commandKeyMode), string(IgnoreKeyMode), string(noKeyMode), string(plainKeyMode)},
flags: []stringsFlags{canDefaultFlag},
- })
- envPassword = environmentRegister(
- EnvironmentStrings{
+ },
+ })
+ envPassword = environmentRegister(EnvironmentArray{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment(unset,
environmentBase{
requirement: requiredKeyOrKeyFile,
@@ -243,30 +248,29 @@ Set to '%s' to ignore the set key value`, noKeyMode, IgnoreKeyMode),
commandKeyMode),
}),
allowed: []string{commandArgsExample, "password"},
- flags: []stringsFlags{isArrayFlag, canExpandFlag},
- })
+ flags: []stringsFlags{canExpandFlag},
+ },
+ })
// EnvPasswordGenWordCount is the number of words that will be selected for password generation
- EnvPasswordGenWordCount = environmentRegister(
- EnvironmentInt{
- environmentDefault: newDefaultedEnvironment(8,
- environmentBase{
- key: genCategory + "WORD_COUNT",
- description: "Number of words to select and include in the generated password.",
- }),
- short: "word count",
- })
+ EnvPasswordGenWordCount = environmentRegister(EnvironmentInt{
+ environmentDefault: newDefaultedEnvironment(8,
+ environmentBase{
+ key: genCategory + "WORD_COUNT",
+ description: "Number of words to select and include in the generated password.",
+ }),
+ short: "word count",
+ })
// EnvPasswordGenTitle indicates if titling (e.g. uppercasing) will occur to words
- EnvPasswordGenTitle = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(true,
- environmentBase{
- key: genCategory + "TITLE",
- description: "Title words during password generation.",
- }),
- })
+ EnvPasswordGenTitle = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(true,
+ environmentBase{
+ key: genCategory + "TITLE",
+ description: "Title words during password generation.",
+ }),
+ })
// EnvPasswordGenTemplate is the output template for controlling how output words are placed together
- EnvPasswordGenTemplate = environmentRegister(
- EnvironmentStrings{
+ EnvPasswordGenTemplate = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("{{range $i, $val := .}}{{if $i}}-{{end}}{{$val.Text}}{{end}}",
environmentBase{
key: genCategory + "TEMPLATE",
@@ -274,19 +278,22 @@ Set to '%s' to ignore the set key value`, noKeyMode, IgnoreKeyMode),
}),
allowed: []string{"<go template>"},
flags: []stringsFlags{canDefaultFlag},
- })
+ },
+ })
// EnvPasswordGenWordList is the command text to generate the word list
- EnvPasswordGenWordList = environmentRegister(EnvironmentStrings{
- environmentDefault: newDefaultedEnvironment("",
- environmentBase{
- key: genCategory + "WORDS_COMMAND",
- description: "Command to retrieve the word list to use for password generation (must be split by newline).",
- }),
- flags: []stringsFlags{isCommandFlag},
+ EnvPasswordGenWordList = environmentRegister(EnvironmentArray{
+ environmentStrings: environmentStrings{
+ environmentDefault: newDefaultedEnvironment("",
+ environmentBase{
+ key: genCategory + "WORDS_COMMAND",
+ description: "Command to retrieve the word list to use for password generation (must be split by newline).",
+ }),
+ flags: []stringsFlags{isCommandFlag},
+ },
})
// EnvLanguage is the language to use for everything
- EnvLanguage = environmentRegister(
- EnvironmentStrings{
+ EnvLanguage = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("en-US",
environmentBase{
key: "LANGUAGE",
@@ -294,19 +301,19 @@ Set to '%s' to ignore the set key value`, noKeyMode, IgnoreKeyMode),
}),
allowed: []string{"<language code>"},
flags: []stringsFlags{canDefaultFlag},
- })
+ },
+ })
// EnvPasswordGenEnabled indicates if password generation is enabled
- EnvPasswordGenEnabled = environmentRegister(
- EnvironmentBool{
- environmentDefault: newDefaultedEnvironment(true,
- environmentBase{
- key: genCategory + "ENABLED",
- description: "Enable password generation.",
- }),
- })
+ EnvPasswordGenEnabled = environmentRegister(EnvironmentBool{
+ environmentDefault: newDefaultedEnvironment(true,
+ environmentBase{
+ key: genCategory + "ENABLED",
+ description: "Enable password generation.",
+ }),
+ })
// EnvPasswordGenChars allows for restricting which characters can be used
- EnvPasswordGenChars = environmentRegister(
- EnvironmentStrings{
+ EnvPasswordGenChars = environmentRegister(EnvironmentString{
+ environmentStrings: environmentStrings{
environmentDefault: newDefaultedEnvironment("",
environmentBase{
key: genCategory + "CHARACTERS",
@@ -314,5 +321,6 @@ Set to '%s' to ignore the set key value`, noKeyMode, IgnoreKeyMode),
}),
allowed: []string{"<list of characters>"},
flags: []stringsFlags{canDefaultFlag},
- })
+ },
+ })
)
diff --git a/internal/config/vars_test.go b/internal/config/vars_test.go
@@ -142,12 +142,12 @@ func checkInt(e config.EnvironmentInt, key, text string, def int64, allowZero bo
func TestTOTPWindows(t *testing.T) {
store.Clear()
- val := config.EnvTOTPColorBetween.AsArray()
+ val := config.EnvTOTPColorBetween.Get()
if slices.Compare(val, config.TOTPDefaultBetween) != 0 {
t.Errorf("invalid read: %v", val)
}
store.SetArray("LOCKBOX_TOTP_COLOR_WINDOWS", []string{"1", "2", "3"})
- val = config.EnvTOTPColorBetween.AsArray()
+ val = config.EnvTOTPColorBetween.Get()
if len(val) != 3 {
t.Errorf("invalid read: %v", val)
}
@@ -155,17 +155,17 @@ func TestTOTPWindows(t *testing.T) {
func TestUnsetArrays(t *testing.T) {
store.Clear()
- for _, i := range []config.EnvironmentStrings{
+ for _, i := range []config.EnvironmentArray{
config.EnvClipCopy,
config.EnvClipPaste,
config.EnvPasswordGenWordList,
} {
- val := i.AsArray()
+ val := i.Get()
if len(val) != 0 {
t.Errorf("invalid array: %v (%s)", val, i.Key())
}
store.SetArray(i.Key(), []string{"a"})
- val = i.AsArray()
+ val = i.Get()
if len(val) != 1 {
t.Errorf("invalid array: %v (%s)", val, i.Key())
}
@@ -174,7 +174,7 @@ func TestUnsetArrays(t *testing.T) {
func TestDefaultStrings(t *testing.T) {
store.Clear()
- for k, v := range map[string]config.EnvironmentStrings{
+ for k, v := range map[string]config.EnvironmentString{
"totp": config.EnvTOTPEntry,
"hash": config.EnvJSONMode,
"en-US": config.EnvLanguage,
@@ -195,7 +195,7 @@ func TestDefaultStrings(t *testing.T) {
func TestEmptyStrings(t *testing.T) {
store.Clear()
- for _, v := range []config.EnvironmentStrings{
+ for _, v := range []config.EnvironmentString{
config.EnvPlatform,
config.EnvStore,
config.EnvKeyFile,
diff --git a/internal/platform/clip/core.go b/internal/platform/clip/core.go
@@ -35,8 +35,8 @@ func New() (Board, error) {
if !config.EnvClipEnabled.Get() {
return Board{}, errors.New("clipboard is off")
}
- overridePaste := config.EnvClipPaste.AsArray()
- overrideCopy := config.EnvClipCopy.AsArray()
+ overridePaste := config.EnvClipPaste.Get()
+ overrideCopy := config.EnvClipCopy.Get()
setPaste := len(overridePaste) > 0
setCopy := len(overrideCopy) > 0
if setPaste && setCopy {