/* Copyright © 2024 Raul */ package cmd import ( "fmt" "github.com/spf13/cobra" "os" ) // clientCmd represents the client command var clientCmd = &cobra.Command{ Use: "client", Short: "Client interface for mini-chat", Long: `Refactored mini-chat client that properly interfaces with its server. Example: ./mini-chat client --ip 192.168.0.100 --port 1337`, Run: func(cmd *cobra.Command, args []string) { if err := setClientParameters(cmd); err != nil { cmd.Help() fmt.Printf("\n-----------------------\n") fmt.Println(err) fmt.Printf("-----------------------\n") os.Exit(0) } Client() }, } func init() { rootCmd.AddCommand(clientCmd) // Here you will define your flags and configuration settings. // Cobra supports Persistent Flags which will work for this command // and all subcommands, e.g.: // clientCmd.PersistentFlags().String("foo", "", "A help for foo") clientCmd.PersistentFlags().String("ip", "", "Server IP to connect to") clientCmd.PersistentFlags().String("port", "1302", "Server port to connect to") // Cobra supports local flags which will only run when this command // is called directly, e.g.: // clientCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") } func setClientParameters(cmd *cobra.Command) error { parameterPort, err := cmd.Flags().GetString("port") if err != nil { return err } if parameterPort != "" { serverPort = parameterPort } parameterIP, err := cmd.Flags().GetString("ip") if err != nil { return err } if parameterIP == "" { err := fmt.Errorf("IP cannot be empty") return err } serverIP = parameterIP return nil }