mirror of
https://github.com/passbolt/go-passbolt-cli.git
synced 2025-05-12 10:58:21 +00:00
add json output to command
This commit is contained in:
parent
7d0c6e3199
commit
be07d31747
3 changed files with 83 additions and 44 deletions
|
@ -2,10 +2,11 @@ package user
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/passbolt/go-passbolt-cli/util"
|
||||
"github.com/passbolt/go-passbolt/helper"
|
||||
"github.com/passbolt/go-passbolt/api"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
@ -45,6 +46,11 @@ func UserCreate(cmd *cobra.Command, args []string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
jsonOutput, err := cmd.Flags().GetBool("json")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ctx := util.GetContext()
|
||||
|
||||
client, err := util.GetClient(ctx)
|
||||
|
@ -54,18 +60,31 @@ func UserCreate(cmd *cobra.Command, args []string) error {
|
|||
defer client.Logout(context.TODO())
|
||||
cmd.SilenceUsage = true
|
||||
|
||||
id, err := helper.CreateUser(
|
||||
user, err := client.CreateUser(
|
||||
ctx,
|
||||
client,
|
||||
role,
|
||||
username,
|
||||
firstname,
|
||||
lastname,
|
||||
api.User{
|
||||
Username: username,
|
||||
Profile: &api.Profile{
|
||||
FirstName: firstname,
|
||||
LastName: lastname,
|
||||
},
|
||||
Role: &api.Role{
|
||||
Name: role,
|
||||
},
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Creating User: %w", err)
|
||||
}
|
||||
|
||||
fmt.Printf("UserID: %v\n", id)
|
||||
return nil
|
||||
if jsonOutput {
|
||||
jsonUser, err := json.MarshalIndent(user, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(string(jsonUser))
|
||||
} else {
|
||||
fmt.Printf("UserID: %v\n", user.ID)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
28
user/get.go
28
user/get.go
|
@ -2,11 +2,11 @@ package user
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/alessio/shellescape"
|
||||
"github.com/passbolt/go-passbolt-cli/util"
|
||||
"github.com/passbolt/go-passbolt/helper"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
@ -29,6 +29,10 @@ func UserGet(cmd *cobra.Command, args []string) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
jsonOutput, err := cmd.Flags().GetBool("json")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ctx := util.GetContext()
|
||||
|
||||
|
@ -39,18 +43,22 @@ func UserGet(cmd *cobra.Command, args []string) error {
|
|||
defer client.Logout(context.TODO())
|
||||
cmd.SilenceUsage = true
|
||||
|
||||
role, username, firstname, lastname, err := helper.GetUser(
|
||||
ctx,
|
||||
client,
|
||||
id,
|
||||
)
|
||||
user, err := client.GetUser(ctx, id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Getting User: %w", err)
|
||||
}
|
||||
fmt.Printf("Username: %v\n", shellescape.StripUnsafe(username))
|
||||
fmt.Printf("FirstName: %v\n", shellescape.StripUnsafe(firstname))
|
||||
fmt.Printf("LastName: %v\n", shellescape.StripUnsafe(lastname))
|
||||
fmt.Printf("Role: %v\n", shellescape.StripUnsafe(role))
|
||||
if jsonOutput {
|
||||
jsonUser, err := json.MarshalIndent(*user, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(string(jsonUser))
|
||||
} else {
|
||||
fmt.Printf("Username: %v\n", shellescape.StripUnsafe(user.Username))
|
||||
fmt.Printf("FirstName: %v\n", shellescape.StripUnsafe(user.Profile.FirstName))
|
||||
fmt.Printf("LastName: %v\n", shellescape.StripUnsafe(user.Profile.LastName))
|
||||
fmt.Printf("Role: %v\n", shellescape.StripUnsafe(user.Role.Name))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
62
user/list.go
62
user/list.go
|
@ -2,6 +2,7 @@ package user
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
|
@ -56,7 +57,10 @@ func UserList(cmd *cobra.Command, args []string) error {
|
|||
if len(columns) == 0 {
|
||||
return fmt.Errorf("You need to specify atleast one column to return")
|
||||
}
|
||||
|
||||
jsonOutput, err := cmd.Flags().GetBool("json")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ctx := util.GetContext()
|
||||
|
||||
client, err := util.GetClient(ctx)
|
||||
|
@ -76,30 +80,38 @@ func UserList(cmd *cobra.Command, args []string) error {
|
|||
return fmt.Errorf("Listing User: %w", err)
|
||||
}
|
||||
|
||||
data := pterm.TableData{columns}
|
||||
if jsonOutput {
|
||||
jsonUser, err := json.MarshalIndent(users, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(string(jsonUser))
|
||||
} else {
|
||||
data := pterm.TableData{columns}
|
||||
|
||||
for _, user := range users {
|
||||
entry := make([]string, len(columns))
|
||||
for i := range columns {
|
||||
switch strings.ToLower(columns[i]) {
|
||||
case "id":
|
||||
entry[i] = user.ID
|
||||
case "username":
|
||||
entry[i] = shellescape.StripUnsafe(user.Username)
|
||||
case "firstname":
|
||||
entry[i] = shellescape.StripUnsafe(user.Profile.FirstName)
|
||||
case "lastname":
|
||||
entry[i] = shellescape.StripUnsafe(user.Profile.LastName)
|
||||
case "role":
|
||||
entry[i] = shellescape.StripUnsafe(user.Role.Name)
|
||||
default:
|
||||
cmd.SilenceUsage = false
|
||||
return fmt.Errorf("Unknown Column: %v", columns[i])
|
||||
}
|
||||
}
|
||||
data = append(data, entry)
|
||||
}
|
||||
for _, user := range users {
|
||||
entry := make([]string, len(columns))
|
||||
for i := range columns {
|
||||
switch strings.ToLower(columns[i]) {
|
||||
case "id":
|
||||
entry[i] = user.ID
|
||||
case "username":
|
||||
entry[i] = shellescape.StripUnsafe(user.Username)
|
||||
case "firstname":
|
||||
entry[i] = shellescape.StripUnsafe(user.Profile.FirstName)
|
||||
case "lastname":
|
||||
entry[i] = shellescape.StripUnsafe(user.Profile.LastName)
|
||||
case "role":
|
||||
entry[i] = shellescape.StripUnsafe(user.Role.Name)
|
||||
default:
|
||||
cmd.SilenceUsage = false
|
||||
return fmt.Errorf("Unknown Column: %v", columns[i])
|
||||
}
|
||||
}
|
||||
data = append(data, entry)
|
||||
}
|
||||
|
||||
pterm.DefaultTable.WithHasHeader().WithData(data).Render()
|
||||
return nil
|
||||
pterm.DefaultTable.WithHasHeader().WithData(data).Render()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue