allow setting vault for password generate/list/delete

This commit is contained in:
2025-03-16 23:14:43 +01:00
parent 4ee522c26c
commit 6880401ac8

View File

@@ -17,6 +17,20 @@ var (
rpcClient *RPC.Client rpcClient *RPC.Client
) )
func parseSingleArgWithOptionalVault(args []string) (vault string, arg string){
if len(args) == 1 {
vault = "root"
arg = args[0]
} else {
vault = args[0]
arg = args[1]
}
return vault, arg
}
// Create the root command // Create the root command
var rootCmd = &cobra.Command{ var rootCmd = &cobra.Command{
Use: "ppass", Use: "ppass",
@@ -25,11 +39,17 @@ var rootCmd = &cobra.Command{
// Create the 'list' subcommand // Create the 'list' subcommand
var listCmd = &cobra.Command{ var listCmd = &cobra.Command{
Use: "list", Use: "list [vault]",
Short: "List all passwords", Short: "List all passwords",
Args: cobra.RangeArgs(0, 1),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
var names []string
vault := "root" vault := "root"
if len(args) == 1 {
vault = args[0]
}
var names []string
err := rpcClient.Call("Query.GetAllNames", &vault, &names) err := rpcClient.Call("Query.GetAllNames", &vault, &names)
if err != nil { if err != nil {
@@ -46,12 +66,12 @@ var listCmd = &cobra.Command{
var generateCmd = &cobra.Command{ var generateCmd = &cobra.Command{
Use: "generate", Use: "generate",
Short: "Generate a Password", Short: "Generate a Password",
Args: cobra.ExactArgs(1), Args: cobra.RangeArgs(1, 2),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
serviceName := args[0] vault, serviceName := parseSingleArgWithOptionalVault(args)
var password *crypto.Password var password *crypto.Password
np := rpc.VaultService{ Vault: "root", Service: serviceName } np := rpc.VaultService{ Vault: vault, Service: serviceName }
err := rpcClient.Call("Query.Generate", &np, &password) err := rpcClient.Call("Query.Generate", &np, &password)
if err != nil { if err != nil {
@@ -65,12 +85,12 @@ var generateCmd = &cobra.Command{
var showCmd = &cobra.Command{ var showCmd = &cobra.Command{
Use: "show", Use: "show",
Short: "show a Password", Short: "show a Password",
Args: cobra.ExactArgs(1), Args: cobra.RangeArgs(1, 2),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
serviceName := args[0] vault, serviceName := parseSingleArgWithOptionalVault(args)
var password *crypto.Password var password *crypto.Password
np := rpc.VaultService{ Vault: "root", Service: serviceName } np := rpc.VaultService{ Vault: vault, Service: serviceName }
err := rpcClient.Call("Query.Get", &np, &password) err := rpcClient.Call("Query.Get", &np, &password)
if err != nil { if err != nil {
@@ -172,16 +192,7 @@ var addPeerCmd = &cobra.Command{
Short: "add a peer", Short: "add a peer",
Args: cobra.RangeArgs(1, 2), Args: cobra.RangeArgs(1, 2),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
var vault string vault, peerString := parseSingleArgWithOptionalVault(args)
var peerString string
if len(args) == 1 {
vault = "root"
peerString = args[0]
} else {
vault = args[0]
peerString = args[1]
}
var success *bool var success *bool
np := rpc.VaultPeer{ Vault: vault, Peer: peerString } np := rpc.VaultPeer{ Vault: vault, Peer: peerString }
@@ -205,16 +216,7 @@ var removePeerCmd = &cobra.Command{
Short: "remove a peer", Short: "remove a peer",
Args: cobra.RangeArgs(1, 2), Args: cobra.RangeArgs(1, 2),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
var vault string vault, peerString := parseSingleArgWithOptionalVault(args)
var peerString string
if len(args) == 1 {
vault = "root"
peerString = args[0]
} else {
vault = args[0]
peerString = args[1]
}
var success *bool var success *bool
np := rpc.VaultPeer{ Vault: vault, Peer: peerString } np := rpc.VaultPeer{ Vault: vault, Peer: peerString }
@@ -238,16 +240,7 @@ var deleteCmd = &cobra.Command{
Short: "delete a Password", Short: "delete a Password",
Args: cobra.RangeArgs(1, 2), Args: cobra.RangeArgs(1, 2),
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
var vault string vault, serviceName := parseSingleArgWithOptionalVault(args)
var serviceName string
if len(args) == 1 {
vault = "root"
serviceName = args[0]
} else {
vault = args[0]
serviceName = args[1]
}
var success *bool var success *bool
np := rpc.VaultService{ Vault: vault, Service: serviceName } np := rpc.VaultService{ Vault: vault, Service: serviceName }