lockbox

password manager
Log | Files | Refs | README | LICENSE

commit ce4291fca88b2fc4b58dbbb41dc2fe774f7f0b1f
parent 26c5690dc5db31e5727b27bc9eacdbc43c454aad
Author: Sean Enck <sean@ttypty.com>
Date:   Wed, 26 Jul 2023 21:08:56 -0400

JSON env transitioned

Diffstat:
Minternal/app/rekey.go | 5++---
Minternal/inputs/env.go | 8+++++++-
Minternal/inputs/vars.go | 10+++++-----
3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/internal/app/rekey.go b/internal/app/rekey.go @@ -79,8 +79,7 @@ func ReKey(cmd CommandOptions, r Keyer) error { if !cmd.Confirm("proceed with rekey") { return nil } - - os.Setenv(inputs.JSONDataOutputEnv, string(inputs.JSONDataOutputRaw)) + inputs.EnvJSONDataOutput.Set(string(inputs.JSONDataOutputRaw)) entries, err := r.JSON() if err != nil { return err @@ -96,7 +95,7 @@ func ReKey(cmd CommandOptions, r Keyer) error { } var insertEnv []string insertEnv = append(insertEnv, vars...) - insertEnv = append(insertEnv, inputs.EnvModTime.Set(modTime)) + insertEnv = append(insertEnv, inputs.EnvModTime.KeyValue(modTime)) if err := r.Insert(ReKeyEntry{Path: path, Env: insertEnv, Data: []byte(entry.Data)}); err != nil { return err } diff --git a/internal/inputs/env.go b/internal/inputs/env.go @@ -141,6 +141,12 @@ func (e EnvironmentCommand) Get() ([]string, error) { return shlex(value) } -func (e environmentBase) Set(value string) string { +// KeyValue will get the string representation of the key+value +func (e environmentBase) KeyValue(value string) string { return fmt.Sprintf("%s=%s", e.key, value) } + +// Set will do an environment set for the value to key +func (e environmentBase) Set(value string) { + os.Setenv(e.key, value) +} diff --git a/internal/inputs/vars.go b/internal/inputs/vars.go @@ -25,8 +25,6 @@ const ( detectedValue = "(detected)" // ModTimeFormat is the expected modtime format ModTimeFormat = time.RFC3339 - // JSONDataOutputEnv controls how JSON is output - JSONDataOutputEnv = prefixKey + "JSON_DATA_OUTPUT" // JSONDataOutputHash means output data is hashed JSONDataOutputHash JSONOutputMode = "hash" // JSONDataOutputBlank means an empty entry is set @@ -39,7 +37,7 @@ var ( // EnvClipboardMax gets the maximum clipboard time EnvClipboardMax = EnvironmentInt{environmentBase: environmentBase{key: clipBaseEnv + "MAX"}, shortDesc: "clipboard max time", allowZero: false, defaultValue: 45} // EnvHashLength handles the hashing output length - EnvHashLength = EnvironmentInt{environmentBase: environmentBase{key: JSONDataOutputEnv + "_HASH_LENGTH"}, shortDesc: "hash length", allowZero: true, defaultValue: 0} + EnvHashLength = EnvironmentInt{environmentBase: environmentBase{key: EnvJSONDataOutput.key + "_HASH_LENGTH"}, shortDesc: "hash length", allowZero: true, defaultValue: 0} // EnvClipOSC52 indicates if OSC52 clipboard mode is enabled EnvClipOSC52 = EnvironmentBool{environmentBase: environmentBase{key: clipBaseEnv + "OSC52"}, defaultValue: false} // EnvNoTOTP indicates if TOTP is disabled @@ -74,6 +72,8 @@ var ( envKey = EnvironmentString{environmentBase: environmentBase{key: prefixKey + "KEY"}, canDefault: false} // EnvModTime is modtime override ability for entries EnvModTime = EnvironmentString{environmentBase: environmentBase{key: prefixKey + "SET_MODTIME"}, canDefault: true, defaultValue: ""} + // EnvJSONDataOutput controls how JSON is output in the 'data' field + EnvJSONDataOutput = EnvironmentString{environmentBase: environmentBase{key: prefixKey + "JSON_DATA_OUTPUT"}, canDefault: true, defaultValue: string(JSONDataOutputHash)} ) type ( @@ -192,7 +192,7 @@ func ListEnvironmentVariables(showValues bool) []string { results = append(results, e.formatEnvironmentVariable(false, EnvClipOSC52.key, no, "enable OSC52 clipboard mode", isYesNoArgs)) results = append(results, e.formatEnvironmentVariable(false, EnvKeyFile.key, "", "additional keyfile to access/protect the database", []string{"keyfile"})) results = append(results, e.formatEnvironmentVariable(false, EnvModTime.key, ModTimeFormat, fmt.Sprintf("input modification time to set for the entry\n(expected format: %s)", ModTimeFormat), []string{"modtime"})) - results = append(results, e.formatEnvironmentVariable(false, JSONDataOutputEnv, string(JSONDataOutputHash), fmt.Sprintf("changes what the data field in JSON outputs will contain\nuse '%s' with CAUTION", JSONDataOutputRaw), []string{string(JSONDataOutputRaw), string(JSONDataOutputHash), string(JSONDataOutputBlank)})) + results = append(results, e.formatEnvironmentVariable(false, EnvJSONDataOutput.key, string(JSONDataOutputHash), fmt.Sprintf("changes what the data field in JSON outputs will contain\nuse '%s' with CAUTION", JSONDataOutputRaw), []string{string(JSONDataOutputRaw), string(JSONDataOutputHash), string(JSONDataOutputBlank)})) results = append(results, e.formatEnvironmentVariable(false, EnvHashLength.key, fmt.Sprintf("%d", EnvHashLength.defaultValue), fmt.Sprintf("maximum hash length the JSON output should contain\nwhen '%s' mode is set for JSON output", JSONDataOutputHash), intArgs)) return results } @@ -227,7 +227,7 @@ func FormatTOTP(value string) string { // ParseJSONOutput handles detecting the JSON output mode func ParseJSONOutput() (JSONOutputMode, error) { - val := strings.ToLower(strings.TrimSpace(EnvironOrDefault(JSONDataOutputEnv, string(JSONDataOutputHash)))) + val := strings.ToLower(strings.TrimSpace(EnvJSONDataOutput.Get())) switch JSONOutputMode(val) { case JSONDataOutputHash: return JSONDataOutputHash, nil