Skip to content

Commit

Permalink
Added the ability to change the output to YAML or JSON
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Hernandez <[email protected]>

changing to output of json or yaml

Signed-off-by: Christian Hernandez <[email protected]>

updated to use output of yaml or json

Signed-off-by: Christian Hernandez <[email protected]>

added the GVK to the output

Signed-off-by: Christian Hernandez <[email protected]>
  • Loading branch information
Christian Hernandez authored and christianh814 committed Jan 20, 2023
1 parent 9c5b183 commit 790d0f4
Showing 1 changed file with 36 additions and 5 deletions.
41 changes: 36 additions & 5 deletions pkg/cli/whoami/whoami.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package whoami

import (
"context"
"encoding/json"
"fmt"

"github.com/spf13/cobra"
Expand All @@ -17,6 +18,7 @@ import (

userv1 "github.com/openshift/api/user/v1"
userv1typedclient "github.com/openshift/client-go/user/clientset/versioned/typed/user/v1"
"sigs.k8s.io/yaml"
)

const (
Expand Down Expand Up @@ -47,6 +49,8 @@ type WhoAmIOptions struct {
ShowContext bool
ShowServer bool
ShowConsoleUrl bool
ShowGroups bool
Output string

genericclioptions.IOStreams
}
Expand Down Expand Up @@ -76,6 +80,7 @@ func NewCmdWhoAmI(f kcmdutil.Factory, streams genericclioptions.IOStreams) *cobr
cmd.Flags().BoolVarP(&o.ShowContext, "show-context", "c", o.ShowContext, "Print the current user context name")
cmd.Flags().BoolVar(&o.ShowServer, "show-server", o.ShowServer, "If true, print the current server's REST API URL")
cmd.Flags().BoolVar(&o.ShowConsoleUrl, "show-console", o.ShowConsoleUrl, "If true, print the current server's web console URL")
cmd.Flags().StringVarP(&o.Output, "output", "o", o.Output, "One of 'yaml' or 'json'.")

return cmd
}
Expand Down Expand Up @@ -136,6 +141,12 @@ func (o *WhoAmIOptions) getWebConsoleUrl() (string, error) {
}

func (o *WhoAmIOptions) Run() error {
var err error
o.UserInterface, err = userv1typedclient.NewForConfig(o.ClientConfig)
if err != nil {
return err
}

switch {
case o.ShowToken:
fmt.Fprintf(o.Out, "%s\n", o.ClientConfig.BearerToken)
Expand All @@ -153,14 +164,34 @@ func (o *WhoAmIOptions) Run() error {
}
fmt.Fprintf(o.Out, "%s\n", consoleUrl)
return nil
}
case o.Output == "yaml":
u, err := o.UserInterface.Users().Get(context.TODO(), "~", metav1.GetOptions{})
u.SetGroupVersionKind(userv1.GroupVersion.WithKind("User"))
if err != nil {
return err
}

var err error
o.UserInterface, err = userv1typedclient.NewForConfig(o.ClientConfig)
if err != nil {
return err
y, err := yaml.Marshal(u)
if err != nil {
return err
}
fmt.Fprintf(o.Out, "%s\n", string(y))
return nil
case o.Output == "json":
u, err := o.UserInterface.Users().Get(context.TODO(), "~", metav1.GetOptions{})
u.SetGroupVersionKind(userv1.GroupVersion.WithKind("User"))
if err != nil {
return err
}
j, err := json.MarshalIndent(u, "", " ")
if err != nil {
return err
}
fmt.Fprintf(o.Out, "%s\n", string(j))
return nil
}

_, err = o.WhoAmI()

return err
}

0 comments on commit 790d0f4

Please sign in to comment.