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
Browse files Browse the repository at this point in the history
I can never remember the names of the profiles I have configured, so
this command will list them for you.

Caveat: It assumes you only care about profiles that are assuming from
another role. It only lists profiles with a source_profile.
  • Loading branch information
logikal committed Dec 21, 2018
1 parent 1d16eb7 commit 2bc4d7e
Show file tree
Hide file tree
Showing 2 changed files with 62 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
61 changes: 61 additions & 0 deletions cmd/list.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package cmd

import (
"fmt"
"os"
"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
}

w := new(tabwriter.Writer)
w.Init(os.Stdout, 0, 8, 2, '\t', 0)
fmt.Fprintln(w, "profile\tarn\tsource_role\t")
fmt.Fprintln(w, "---\t---\t---\t")
for profile, v := range profiles {
if role, exist := v["role_arn"]; exist {
if src, exist := v["source_profile"]; exist {
s := fmt.Sprintf("%s\t%s\t%s\t", profile, role, src)
fmt.Fprintln(w, s)
}
}
}
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 2bc4d7e

Please sign in to comment.