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 Aug 13, 2018
1 parent 85cb5c8 commit 2314cc8
Show file tree
Hide file tree
Showing 2 changed files with 65 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 @@ -97,7 +97,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)
}

opts := lib.ProviderOptions{
Expand Down
64 changes: 64 additions & 0 deletions cmd/list.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
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 listPre(cmd *cobra.Command, args []string) {
}

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 2314cc8

Please sign in to comment.