lockbox

password manager
Log | Files | Refs | README | LICENSE

commit 4be6570363410f526a28e5c2f97f7fa2a5356f2b
parent 3b7a8de84c14cc760408c592f679a9344692d1e9
Author: Sean Enck <sean@ttypty.com>
Date:   Sat, 29 Jul 2023 07:21:07 -0400

env is now env, help is now default env data

Diffstat:
Minternal/app/completions.go | 4----
Minternal/app/core.go | 6+-----
Minternal/app/doc/bash | 3---
Minternal/app/doc/zsh | 5-----
Minternal/app/info.go | 33++++++++++++---------------------
Minternal/app/info_test.go | 30++++++------------------------
Minternal/config/core.go | 5+----
Minternal/config/vars.go | 12++++--------
Minternal/config/vars_test.go | 2+-
9 files changed, 25 insertions(+), 75 deletions(-)

diff --git a/internal/app/completions.go b/internal/app/completions.go @@ -31,8 +31,6 @@ type ( JSONCommand string HelpCommand string HelpAdvancedCommand string - EnvShortCommand string - EnvCommand string } ) @@ -53,11 +51,9 @@ func GenerateCompletions(isBash, defaults bool) ([]string, error) { MultiLineCommand: MultiLineCommand, JSONCommand: JSONCommand, HelpCommand: HelpCommand, - EnvCommand: EnvCommand, HelpAdvancedCommand: HelpAdvancedCommand, TOTPCommand: TOTPCommand, MoveCommand: MoveCommand, - EnvShortCommand: EnvShortCommand, DoList: fmt.Sprintf("%s %s", name, ListCommand), DoTOTPList: fmt.Sprintf("%s %s %s", name, TOTPCommand, TOTPListCommand), Options: []string{MultiLineCommand, EnvCommand, HelpCommand, ListCommand, ShowCommand, VersionCommand, JSONCommand}, diff --git a/internal/app/core.go b/internal/app/core.go @@ -52,10 +52,6 @@ const ( TOTPListCommand = ListCommand // TOTPOnceCommand will perform like a normal totp request but not refresh TOTPOnceCommand = "once" - // EnvDefaultsCommand will display the default env variables, not those set - EnvDefaultsCommand = "defaults" - // EnvShortCommand will output the set environment variables - EnvShortCommand = "short" // BashCommand is the command to generate bash completions BashCommand = "bash" // BashDefaultsCommand will generate environment agnostic completions @@ -213,7 +209,7 @@ func Usage(verbose bool) ([]string, error) { } results = append(results, strings.Split(strings.TrimSpace(doc), "\n")...) results = append(results, "") - results = append(results, config.ListEnvironmentVariables(false)...) + results = append(results, config.ListEnvironmentVariables()...) } return append(usage, results...), nil } diff --git a/internal/app/doc/bash b/internal/app/doc/bash @@ -12,9 +12,6 @@ _{{ $.Executable }}() { else if [ "$COMP_CWORD" -eq 2 ]; then case ${COMP_WORDS[1]} in - "{{ $.EnvCommand }}") - opts="{{ $.EnvShortCommand }}" - ;; "{{ $.HelpCommand }}") opts="{{ $.HelpAdvancedCommand }}" ;; diff --git a/internal/app/doc/zsh b/internal/app/doc/zsh @@ -15,11 +15,6 @@ _{{ $.Executable }}() { ;; *) case $words[2] in - "{{ $.EnvCommand }}") - if [ "$len" -eq 3 ]; then - compadd "$@" "{{ $.EnvShortCommand }}" - fi - ;; "{{ $.HelpCommand }}") if [ "$len" -eq 3 ]; then compadd "$@" "{{ $.HelpAdvancedCommand }}" diff --git a/internal/app/info.go b/internal/app/info.go @@ -42,32 +42,27 @@ func info(command string, args []string) ([]string, error) { return nil, err } return results, nil - case EnvCommand, BashCommand, ZshCommand: + case EnvCommand: + if len(args) != 0 { + return nil, errors.New("invalid env command") + } + return config.Environ(), nil + case BashCommand, ZshCommand: defaultFlag := BashDefaultsCommand - secondFlag := "" - isEnv := command == EnvCommand - if isEnv { - defaultFlag = EnvDefaultsCommand - secondFlag = EnvShortCommand + if command == ZshCommand { + defaultFlag = ZshDefaultsCommand } - defaults, short, err := getInfoDefault(args, defaultFlag, secondFlag) + defaults, err := getInfoDefault(args, defaultFlag) if err != nil { return nil, err } - if isEnv { - if short { - return config.Environ(), nil - } - return config.ListEnvironmentVariables(!defaults), nil - } return GenerateCompletions(command == BashCommand, defaults) } return nil, nil } -func getInfoDefault(args []string, possibleArg, otherArg string) (bool, bool, error) { +func getInfoDefault(args []string, possibleArg string) (bool, error) { first := false - second := false invalid := false switch len(args) { case 0: @@ -78,16 +73,12 @@ func getInfoDefault(args []string, possibleArg, otherArg string) (bool, bool, er first = true } else { invalid = true - if otherArg != "" && arg == otherArg { - invalid = false - second = true - } } default: invalid = true } if invalid { - return false, false, errors.New("invalid argument") + return false, errors.New("invalid argument") } - return first, second, nil + return first, nil } diff --git a/internal/app/info_test.go b/internal/app/info_test.go @@ -76,44 +76,26 @@ func TestEnvInfo(t *testing.T) { os.Clearenv() var buf bytes.Buffer ok, err := app.Info(&buf, "env", []string{}) - if !ok || err != nil { + if ok || err != nil { t.Errorf("invalid error: %v", err) } - if buf.String() == "" { + if buf.String() != "" { t.Error("nothing written") } - buf = bytes.Buffer{} - ok, err = app.Info(&buf, "env", []string{"defaults"}) + os.Setenv("LOCKBOX_TEST", "1") + ok, err = app.Info(&buf, "env", []string{}) if !ok || err != nil { t.Errorf("invalid error: %v", err) } if buf.String() == "" { t.Error("nothing written") } - if _, err = app.Info(&buf, "env", []string{"default"}); err.Error() != "invalid argument" { + if _, err = app.Info(&buf, "env", []string{"defaults"}); err.Error() != "invalid env command" { t.Errorf("invalid error: %v", err) } - if _, err = app.Info(&buf, "env", []string{"test", "default"}); err.Error() != "invalid argument" { - t.Errorf("invalid error: %v", err) - } - os.Clearenv() - buf = bytes.Buffer{} - ok, err = app.Info(&buf, "env", []string{"short"}) - if ok || err != nil { + if _, err = app.Info(&buf, "env", []string{"test", "default"}); err.Error() != "invalid env command" { t.Errorf("invalid error: %v", err) } - if buf.String() != "" { - t.Error("something written") - } - os.Setenv("LOCKBOX_TEST", "1") - buf = bytes.Buffer{} - ok, err = app.Info(&buf, "env", []string{"short"}) - if !ok || err != nil { - t.Errorf("invalid error: %v", err) - } - if buf.String() == "" { - t.Error("nothing written") - } } func TestZshInfo(t *testing.T) { diff --git a/internal/config/core.go b/internal/config/core.go @@ -37,10 +37,7 @@ var detectEnvironmentPaths = []string{filepath.Join(".config", envFile), filepat type ( // JSONOutputMode is the output mode definition - JSONOutputMode string - environmentOutput struct { - showValues bool - } + JSONOutputMode string // SystemPlatform represents the platform lockbox is running on. SystemPlatform string environmentBase struct { diff --git a/internal/config/vars.go b/internal/config/vars.go @@ -6,7 +6,6 @@ import ( "flag" "fmt" "net/url" - "os" "os/exec" "sort" "strings" @@ -150,16 +149,12 @@ func GetKey() ([]byte, error) { return b, nil } -// ListEnvironmentVariables will print information about env variables and potential/set values -func ListEnvironmentVariables(showValues bool) []string { - out := environmentOutput{showValues: showValues} +// ListEnvironmentVariables will print information about env variables +func ListEnvironmentVariables() []string { var results []string for _, item := range []printer{EnvStore, envKeyMode, envKey, EnvNoClip, EnvNoColor, EnvInteractive, EnvReadOnly, EnvTOTPToken, EnvFormatTOTP, EnvMaxTOTP, EnvTOTPColorBetween, EnvClipPaste, EnvClipCopy, EnvClipMax, EnvPlatform, EnvNoTOTP, EnvHookDir, EnvClipOSC52, EnvKeyFile, EnvModTime, EnvJSONDataOutput, EnvHashLength, EnvConfig} { env := item.self() value, allow := item.values() - if out.showValues { - value = os.Getenv(env.key) - } if len(value) == 0 { value = "(unset)" } @@ -169,9 +164,10 @@ func ListEnvironmentVariables(showValues bool) []string { if r != "" { requirement = r } - text := fmt.Sprintf("\n%s\n %s\n\n requirement: %s\n value: %s\n options: %s\n", env.key, description, requirement, value, strings.Join(allow, "|")) + text := fmt.Sprintf("\n%s\n %s\n\n requirement: %s\n default: %s\n options: %s\n", env.key, description, requirement, value, strings.Join(allow, "|")) results = append(results, text) } + sort.Strings(results) return results } diff --git a/internal/config/vars_test.go b/internal/config/vars_test.go @@ -101,7 +101,7 @@ func TestGetKey(t *testing.T) { func TestListVariables(t *testing.T) { known := make(map[string]struct{}) - for _, v := range config.ListEnvironmentVariables(false) { + for _, v := range config.ListEnvironmentVariables() { trim := strings.Split(strings.TrimSpace(v), " ")[0] if !strings.HasPrefix(trim, "LOCKBOX_") { t.Errorf("invalid env: %s", v)