/*
Copyright © 2024 Raul <raul@bulgariu.xyz>
*/

package cmd

import (
	"github.com/spf13/cobra"
	"log"
)

// serverCmd represents the server command
var serverCmd = &cobra.Command{
	Use:   "server",
	Short: "Tiny chat server",
	Long: `Refactored mini-chat server designed to be connected to
using a proper interface this time, not using netcat.

Example:
 ./tiny-chat server --port 1337`,
	Run: func(cmd *cobra.Command, args []string) {

		if err := setServerParameters(cmd); err != nil {
			log.Fatalf("Error happened trying to set parameters: %v\n", err)
		}

		Server()
	},
}

func init() {
	rootCmd.AddCommand(serverCmd)

	// Here you will define your flags and configuration settings.

	// Cobra supports Persistent Flags which will work for this command
	// and all subcommands, e.g.:
	// serverCmd.PersistentFlags().String("foo", "", "A help for foo")
	serverCmd.PersistentFlags().String("port", "1302", "port to use for listening")

	// Cobra supports local flags which will only run when this command
	// is called directly, e.g.:
	// serverCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
}

func setServerParameters(cmd *cobra.Command) error {
	parameterPort, err := cmd.Flags().GetString("port")
	if err != nil {
		return err
	}
	if parameterPort != "" {
		listenPort = parameterPort
	}
	return nil
}