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