Skip to content
This repository has been archived by the owner on May 18, 2021. It is now read-only.

Commit

Permalink
add a list command (#67)
Browse files Browse the repository at this point in the history
* add a `list` command
  • Loading branch information
logikal authored and nickatsegment committed Jan 18, 2019
1 parent 270de5b commit ab9818e
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
2 changes: 1 addition & 1 deletion cmd/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func execRun(cmd *cobra.Command, args []string) error {
}

if _, ok := profiles[profile]; !ok {
return fmt.Errorf("Profile '%s' not found in your aws config", profile)
return fmt.Errorf("Profile '%s' not found in your aws config. Use list command to see configured profiles.", profile)
}

// check for an assume_role_ttl in the profile if we don't have a more explicit one
Expand Down
68 changes: 68 additions & 0 deletions cmd/list.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package cmd

import (
"fmt"
"os"
"sort"
"text/tabwriter"

analytics "github.com/segmentio/analytics-go"
"github.com/segmentio/aws-okta/lib"
"github.com/spf13/cobra"
)

// listCmd represents the list command
var listCmd = &cobra.Command{
Use: "list",
Short: "list will show you the profiles currently configured",
RunE: listRun,
}

func init() {
RootCmd.AddCommand(listCmd)
}

func listRun(cmd *cobra.Command, args []string) error {
config, err := lib.NewConfigFromEnv()
if err != nil {
return err
}

profiles, err := config.Parse()
if err != nil {
return err
}

// Let's sort this list of profiles so we can have some more deterministic output:
var profileNames []string

for profile := range profiles {
profileNames = append(profileNames, profile)
}

sort.Strings(profileNames)

w := new(tabwriter.Writer)
w.Init(os.Stdout, 0, 8, 2, '\t', 0)
fmt.Fprintln(w, "PROFILE\tARN\tSOURCE_ROLE\t")
for _, profile := range profileNames {
v := profiles[profile]
if role, exist := v["role_arn"]; exist {
fmt.Fprintf(w, "%s\t%s\t%s\n", profile, role, v["source_profile"])
}
}
w.Flush()

if analyticsEnabled && analyticsClient != nil {
analyticsClient.Enqueue(analytics.Track{
UserId: username,
Event: "Listed Profiles",
Properties: analytics.NewProperties().
Set("backend", backend).
Set("aws-okta-version", version).
Set("profile-count", len(profiles)).
Set("command", "list"),
})
}
return nil
}

0 comments on commit ab9818e

Please sign in to comment.