This commit is contained in:
Samuel Lorch 2023-07-06 15:18:56 +03:00 committed by GitHub
commit 5cad7cca0d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 31 deletions

View file

@ -12,6 +12,7 @@ import (
"github.com/passbolt/go-passbolt/api"
"github.com/passbolt/go-passbolt/helper"
"github.com/spf13/cobra"
"golang.org/x/exp/slices"
"github.com/pterm/pterm"
)
@ -75,11 +76,15 @@ func ResourceList(cmd *cobra.Command, args []string) error {
defer client.Logout(context.TODO())
cmd.SilenceUsage = true
secretNeeded := jsonOutput || slices.Contains(columns, "password") || slices.Contains(columns, "description")
resources, err := client.GetResources(ctx, &api.GetResourcesOptions{
FilterIsFavorite: favorite,
FilterIsOwnedByMe: own,
FilterIsSharedWithGroup: group,
FilterHasParent: folderParents,
ContainSecret: secretNeeded,
ContainResourceType: secretNeeded,
})
if err != nil {
return fmt.Errorf("Listing Resource: %w", err)
@ -93,10 +98,14 @@ func ResourceList(cmd *cobra.Command, args []string) error {
if jsonOutput {
outputResources := []ResourceJsonOutput{}
for i := range resources {
_, _, _, _, pass, desc, err := helper.GetResource(ctx, client, resources[i].ID)
if err != nil {
return fmt.Errorf("Get Resource %w", err)
var pass, desc string
if secretNeeded {
_, _, _, _, pass, desc, err = helper.GetResourceFromData(client, resources[i], resources[i].Secrets[0], resources[i].ResourceType)
if err != nil {
return fmt.Errorf("Get Resource From Data %w", err)
}
}
outputResources = append(outputResources, ResourceJsonOutput{
ID: &resources[i].ID,
FolderParentID: &resources[i].FolderParentID,
@ -118,6 +127,14 @@ func ResourceList(cmd *cobra.Command, args []string) error {
data := pterm.TableData{columns}
for _, resource := range resources {
var pass, desc string
if secretNeeded {
_, _, _, _, pass, desc, err = helper.GetResourceFromData(client, resource, resource.Secrets[0], resource.ResourceType)
if err != nil {
return fmt.Errorf("Get Resource From Data %w", err)
}
}
entry := make([]string, len(columns))
for i := range columns {
switch strings.ToLower(columns[i]) {
@ -132,16 +149,8 @@ func ResourceList(cmd *cobra.Command, args []string) error {
case "uri":
entry[i] = shellescape.StripUnsafe(resource.URI)
case "password":
_, _, _, _, pass, _, err := helper.GetResource(ctx, client, resource.ID)
if err != nil {
return fmt.Errorf("Get Resource %w", err)
}
entry[i] = shellescape.StripUnsafe(pass)
case "description":
_, _, _, _, _, desc, err := helper.GetResource(ctx, client, resource.ID)
if err != nil {
return fmt.Errorf("Get Resource %w", err)
}
entry[i] = shellescape.StripUnsafe(desc)
case "createdtimestamp":
entry[i] = resource.Created.Format(time.RFC3339)