1package cmd
2
3import (
4 "github.com/charmbracelet/soft-serve/pkg/backend"
5 "github.com/charmbracelet/soft-serve/pkg/sshutils"
6 "github.com/spf13/cobra"
7)
8
9// InfoCommand returns a command that shows the user's info.
10func InfoCommand() *cobra.Command {
11 cmd := &cobra.Command{
12 Use: "info",
13 Short: "Show your info",
14 Args: cobra.NoArgs,
15 RunE: func(cmd *cobra.Command, _ []string) error {
16 ctx := cmd.Context()
17 be := backend.FromContext(ctx)
18 pk := sshutils.PublicKeyFromContext(ctx)
19 user, err := be.UserByPublicKey(ctx, pk)
20 if err != nil {
21 return err //nolint:wrapcheck
22 }
23
24 cmd.Printf("Username: %s\n", user.Username())
25 cmd.Printf("Admin: %t\n", user.IsAdmin())
26 cmd.Printf("Public keys:\n")
27 for _, pk := range user.PublicKeys() {
28 cmd.Printf(" %s\n", sshutils.MarshalAuthorizedKey(pk))
29 }
30 return nil
31 },
32 }
33
34 return cmd
35}