package cmd import ( "context" "git.jfdev.de/JonasFranzDEV/hal/hal" "git.jfdev.de/JonasFranzDEV/hal/parser" "github.com/spf13/cobra" "gopkg.in/yaml.v2" "io/ioutil" "os" ) var clusterCmd = &cobra.Command{ Args: cobra.ExactArgs(1), Use: "cluster [config file]", RunE: runClusterCommand, } func init() { rootCommand.AddCommand(clusterCmd) } func runClusterCommand(cmd *cobra.Command, args []string) error { configFile := args[0] // Parse config if stats, err := os.Stat(configFile); err != nil || stats.IsDir() { return err } file, err := ioutil.ReadFile(configFile) if err != nil { return err } config := &hal.ClusterConfig{} if err := yaml.Unmarshal(file, config); err != nil { return err } logger, err := hal.NewPageErrorLogger("page_errors") if err != nil { return err } defer logger.Close() // Parse modules modules, err := parser.GetModulesFromConfig(config, debug, logger) if err != nil { return err } // Create the cluster cluster, err := config.BuildCluster(modules) if err != nil { return err } // Run return cluster.Run(context.Background()) }