gopass/internal/action/clihelper.go
Dominik Schulz 16c071a780
Enable golangci-lint on push and pr (#2158)
Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>
2022-03-24 21:58:53 +01:00

52 lines
914 B
Go

package action
import (
"strings"
"github.com/urfave/cli/v2"
)
type argList []string
func (a argList) Get(n int) string {
if len(a) > n {
return a[n]
}
return ""
}
func parseArgs(c *cli.Context) (argList, map[string]string) {
args := make(argList, 0, c.Args().Len())
kvps := make(map[string]string, c.Args().Len())
if c.Args().Len() == 1 {
// If there is only one arg, assume it is
// the secret name, so don't attempt to
// parse into args and kvps
args = append(args, c.Args().Get(0))
return args, kvps
}
OUTER:
for _, arg := range c.Args().Slice() {
for _, sep := range []string{":", "="} {
if !strings.Contains(arg, sep) {
continue
}
p := strings.Split(arg, sep)
if len(p) < 2 {
args = append(args, arg)
continue OUTER
}
key := p[0]
kvps[key] = strings.Join(p[1:], ":")
continue OUTER
}
args = append(args, arg)
}
return args, kvps
}