package cmd import ( "fmt" "ocwrapper/common" qsfera "ocwrapper/qsfera" qsferaConfig "ocwrapper/qsfera/config" wrapper "ocwrapper/wrapper" wrapperConfig "ocwrapper/wrapper/config" "github.com/spf13/cobra" ) var rootCmd = &cobra.Command{ Use: "ocwrapper", Short: "ocwrapper is a wrapper for qsfera server", Run: func(cmd *cobra.Command, args []string) { if err := cmd.Help(); err != nil { fmt.Printf("error executing help command: %v\n", err) } }, } func serveCmd() *cobra.Command { serveCmd := &cobra.Command{ Use: "serve", Short: "Starts the server", Run: func(cmd *cobra.Command, args []string) { common.Wg.Add(2) // set configs binFlag, _ := cmd.Flags().GetString("bin") qsferaConfig.Set("bin", binFlag) urlFlag, _ := cmd.Flags().GetString("url") qsferaConfig.Set("url", urlFlag) retryFlag, _ := cmd.Flags().GetString("retry") qsferaConfig.Set("retry", retryFlag) adminUsernameFlag, _ := cmd.Flags().GetString("admin-username") qsferaConfig.Set("adminUsername", adminUsernameFlag) adminPasswordFlag, _ := cmd.Flags().GetString("admin-password") qsferaConfig.Set("adminPassword", adminPasswordFlag) skipQsferaRunFlag, _ := cmd.Flags().GetBool("skip-Qsfera-run") if !skipQsferaRunFlag { go qsfera.Start(nil) } portFlag, _ := cmd.Flags().GetString("port") go wrapper.Start(portFlag) }, } // serve command args serveCmd.Flags().SortFlags = false serveCmd.Flags().StringP("bin", "", qsferaConfig.Get("bin"), "Full qsfera binary path") serveCmd.Flags().StringP("url", "", qsferaConfig.Get("url"), "qsfera server url") serveCmd.Flags().StringP("retry", "", qsferaConfig.Get("retry"), "Number of retries to start qsfera server") serveCmd.Flags().StringP("port", "p", wrapperConfig.Get("port"), "Wrapper API server port") serveCmd.Flags().StringP("admin-username", "", "", "admin username for qsfera server") serveCmd.Flags().StringP("admin-password", "", "", "admin password for qsfera server") serveCmd.Flags().Bool("skip-Qsfera-run", false, "Skip running qsfera server") return serveCmd } // Execute executes the command func Execute() { rootCmd.CompletionOptions.DisableDefaultCmd = true rootCmd.AddCommand(serveCmd()) if err := rootCmd.Execute(); err != nil { fmt.Printf("error executing command: %v\n", err) } }