|
1 | 1 | package command |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "context" |
| 4 | + "fmt" |
5 | 5 | "strings" |
6 | 6 |
|
7 | | - "github.com/shurcooL/graphql" |
8 | | - cli "gopkg.in/urfave/cli.v2" |
| 7 | + "github.com/humio/cli/api" |
9 | 8 | ) |
10 | 9 |
|
11 | | -func UsersShow(c *cli.Context) error { |
12 | | - config, _ := getServerConfig(c) |
| 10 | +type UsersShowCommand struct { |
| 11 | + Meta |
| 12 | +} |
| 13 | + |
| 14 | +func (f *UsersShowCommand) Help() string { |
| 15 | + helpText := ` |
| 16 | +Usage: humio users show <username> |
| 17 | +
|
| 18 | + Shows details about a users. This command requires root access. |
| 19 | +
|
| 20 | + To see members in a repository or view use: |
| 21 | +
|
| 22 | + $ humio members show <repo> <username> |
| 23 | +
|
| 24 | + General Options: |
| 25 | +
|
| 26 | + ` + generalOptionsUsage() + ` |
| 27 | +` |
| 28 | + return strings.TrimSpace(helpText) |
| 29 | +} |
| 30 | + |
| 31 | +func (f *UsersShowCommand) Synopsis() string { |
| 32 | + return "Shows details about a user." |
| 33 | +} |
13 | 34 |
|
14 | | - ensureToken(config) |
15 | | - ensureURL(config) |
| 35 | +func (f *UsersShowCommand) Name() string { return "users show" } |
16 | 36 |
|
17 | | - username := c.Args().First() |
| 37 | +func (f *UsersShowCommand) Run(args []string) int { |
| 38 | + flags := f.Meta.FlagSet(f.Name(), FlagSetClient) |
| 39 | + flags.Usage = func() { f.Ui.Output(f.Help()) } |
18 | 40 |
|
19 | | - var q struct { |
20 | | - Account struct { |
21 | | - Username string |
22 | | - FullName string |
23 | | - IsRoot bool |
24 | | - CreatedAt string |
25 | | - } `graphql:"account(username: $username)"` |
| 41 | + if err := flags.Parse(args); err != nil { |
| 42 | + return 1 |
26 | 43 | } |
27 | 44 |
|
28 | | - variables := map[string]interface{}{ |
29 | | - "username": graphql.String(username), |
| 45 | + // Check that we got one argument |
| 46 | + args = flags.Args() |
| 47 | + if l := len(args); l != 1 { |
| 48 | + f.Ui.Error("This command takes one argument: <username>") |
| 49 | + f.Ui.Error(commandErrorText(f)) |
| 50 | + return 1 |
30 | 51 | } |
31 | 52 |
|
32 | | - graphqlErr := newGraphQLClient(config).Query(context.Background(), &q, variables) |
33 | | - check(graphqlErr) |
| 53 | + username := args[0] |
34 | 54 |
|
35 | | - userData := []string{q.Account.Username, q.Account.FullName, q.Account.CreatedAt, yesNo(q.Account.IsRoot)} |
| 55 | + // Get the HTTP client |
| 56 | + client, err := f.Meta.Client() |
| 57 | + if err != nil { |
| 58 | + f.Ui.Error(fmt.Sprintf("Error initializing client: %s", err)) |
| 59 | + return 1 |
| 60 | + } |
| 61 | + |
| 62 | + user, err := client.Users().Get(username) |
| 63 | + |
| 64 | + if err != nil { |
| 65 | + f.Ui.Error(fmt.Sprintf("Error fetching token list: %s", err)) |
| 66 | + return 1 |
| 67 | + } |
| 68 | + |
| 69 | + printUserTable(user) |
| 70 | + |
| 71 | + return 0 |
| 72 | +} |
| 73 | + |
| 74 | +func printUserTable(user api.User) { |
| 75 | + userData := []string{user.Username, user.FullName, user.CreatedAt, yesNo(user.IsRoot)} |
36 | 76 |
|
37 | 77 | printTable([]string{ |
38 | 78 | "Username | Name | Created At | Is Root", |
39 | 79 | strings.Join(userData, "|"), |
40 | 80 | }) |
41 | | - |
42 | | - return nil |
43 | 81 | } |
0 commit comments