/* Copyright © 2025 Jake jake.young.dev@gmail.com */ package server import ( "encoding/base64" "fmt" "code.jakeyoungdev.com/jake/mctl/database" "github.com/spf13/cobra" ) var decode bool var viewCmd = &cobra.Command{ Use: "view", Example: "mctl server view", Short: "view all saved servers", SilenceUsage: true, Run: func(cmd *cobra.Command, args []string) { db, err := database.New() if err != nil { fmt.Println(err) return } defer db.Close() if len(args) > 0 { srvName := args[0] s, err := db.Server(srvName) if err != nil { fmt.Println(err) return } fmt.Println("-----") fmt.Printf("Name: %s\n", s.Name) fmt.Printf("Address: %s\n", s.Server) fmt.Printf("Port: %d\n", s.Port) if decode { pwb, err := base64.StdEncoding.DecodeString(s.Password) if err != nil { fmt.Println(err) return } fmt.Printf("Password: %s\n", string(pwb)) } else { fmt.Println("Password: [REDACTED]") } fmt.Printf("Default: %t\n", s.Active) return } ts, err := db.AllServers() if err != nil { if err.Error() == ErrInit { fmt.Println(ErrInitRsp) return } else { fmt.Println(err) return } } for _, s := range ts { fmt.Println("-----") fmt.Printf("Name: %s\n", s.Name) fmt.Printf("Address: %s\n", s.Server) fmt.Printf("Port: %d\n", s.Port) if decode { pwb, err := base64.StdEncoding.DecodeString(s.Password) if err != nil { fmt.Println(err) return } fmt.Printf("Password: %s\n", string(pwb)) } else { fmt.Println("Password: [REDACTED]") } fmt.Printf("Default: %t\n", s.Active) } }, } func init() { viewCmd.Flags().BoolVarP(&decode, "decode", "d", false, "decodes server passwords") ServerCmd.AddCommand(viewCmd) }