commit e0a56b3d1f22034fb2119ae30b49e3c321d1157c
parent 42a9f114a3f1200222386844ac59e95b4ea19416
Author: Sean Enck <sean@ttypty.com>
Date: Sat, 1 Oct 2022 14:06:33 -0400
subcommands are collapsing into main
Diffstat:
3 files changed, 50 insertions(+), 73 deletions(-)
diff --git a/cmd/main.go b/cmd/main.go
@@ -6,7 +6,9 @@ import (
"errors"
"fmt"
"os"
+ "os/exec"
"strings"
+ "time"
"github.com/enckse/lockbox/internal/backend"
"github.com/enckse/lockbox/internal/cli"
@@ -37,10 +39,12 @@ func getEntry(args []string, idx int) string {
func internalCallback(name string) callbackFunction {
switch name {
- case "hash":
- return subcommands.Hashed
case "totp":
return subcommands.TOTP
+ case "hash":
+ return hashText
+ case "clear":
+ return clearClipboard
}
return nil
}
@@ -168,11 +172,6 @@ func run() *programError {
if err := clipboard.CopyTo(existing.Value); err != nil {
return newError("clipboard failed", err)
}
-
- case "clear":
- if err := subcommands.ClearClipboardCallback(); err != nil {
- return newError("failed to handle clipboard clear", err)
- }
default:
a := args[2:]
callback := internalCallback(command)
@@ -187,6 +186,50 @@ func run() *programError {
return nil
}
+func hashText(args []string) error {
+ if len(args) == 0 {
+ return errors.New("git diff requires a file")
+ }
+ t, err := backend.Load(args[len(args)-1])
+ if err != nil {
+ return err
+ }
+ e, err := t.QueryCallback(backend.QueryOptions{Mode: backend.ListMode, Values: backend.HashedValue})
+ if err != nil {
+ return err
+ }
+ for _, item := range e {
+ fmt.Printf("%s:\nhash:%s\n", item.Path, item.Value)
+ }
+ return nil
+}
+
+func clearClipboard(args []string) error {
+ idx := 0
+ val, err := inputs.Stdin(false)
+ if err != nil {
+ return err
+ }
+ clipboard, err := platform.NewClipboard()
+ if err != nil {
+ return err
+ }
+ pCmd, pArgs := clipboard.Args(false)
+ val = strings.TrimSpace(val)
+ for idx < clipboard.MaxTime {
+ idx++
+ time.Sleep(1 * time.Second)
+ out, err := exec.Command(pCmd, pArgs...).Output()
+ if err != nil {
+ continue
+ }
+ if strings.TrimSpace(string(out)) != val {
+ return nil
+ }
+ }
+ return clipboard.CopyTo("")
+}
+
func confirm(prompt string) bool {
yesNo, err := inputs.ConfirmYesNoPrompt(prompt)
if err != nil {
diff --git a/internal/subcommands/clear.go b/internal/subcommands/clear.go
@@ -1,38 +0,0 @@
-// Package subcommands handles clearing the clipboard.
-package subcommands
-
-import (
- "os/exec"
- "strings"
- "time"
-
- "github.com/enckse/lockbox/internal/inputs"
- "github.com/enckse/lockbox/internal/platform"
-)
-
-// ClearClipboardCallback handles clearing the clipboard over time.
-func ClearClipboardCallback() error {
- idx := 0
- val, err := inputs.Stdin(false)
- if err != nil {
- return err
- }
- clipboard, err := platform.NewClipboard()
- if err != nil {
- return err
- }
- pCmd, pArgs := clipboard.Args(false)
- val = strings.TrimSpace(val)
- for idx < clipboard.MaxTime {
- idx++
- time.Sleep(1 * time.Second)
- out, err := exec.Command(pCmd, pArgs...).Output()
- if err != nil {
- continue
- }
- if strings.TrimSpace(string(out)) != val {
- return nil
- }
- }
- return clipboard.CopyTo("")
-}
diff --git a/internal/subcommands/hashed.go b/internal/subcommands/hashed.go
@@ -1,28 +0,0 @@
-// Package subcommands handles git diffs.
-package subcommands
-
-import (
- "errors"
- "fmt"
-
- "github.com/enckse/lockbox/internal/backend"
-)
-
-// Hashed handles dumping of lb entries.
-func Hashed(args []string) error {
- if len(args) == 0 {
- return errors.New("git diff requires a file")
- }
- t, err := backend.Load(args[len(args)-1])
- if err != nil {
- return err
- }
- e, err := t.QueryCallback(backend.QueryOptions{Mode: backend.ListMode, Values: backend.HashedValue})
- if err != nil {
- return err
- }
- for _, item := range e {
- fmt.Printf("%s:\nhash:%s\n", item.Path, item.Value)
- }
- return nil
-}