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