75 lines
2.3 KiB
Go
75 lines
2.3 KiB
Go
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)
|
|
}
|
|
}
|