54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/Pingu-Studio/MaidnCLI/internal/bootstrap"
|
|
"github.com/Pingu-Studio/MaidnCLI/internal/config"
|
|
"github.com/Pingu-Studio/MaidnCLI/internal/ui"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var bootstrapConfigPath string
|
|
var bootstrapOutputPath string
|
|
|
|
var bootstrapCmd = &cobra.Command{
|
|
Use: "bootstrap",
|
|
Short: "Bootstrap Talos and Flux from config or an interactive wizard.",
|
|
Run: runBootstrap,
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(bootstrapCmd)
|
|
bootstrapCmd.Flags().StringVar(&bootstrapConfigPath, "config", "", "Path to bootstrap config YAML")
|
|
bootstrapCmd.Flags().StringVar(&bootstrapOutputPath, "out", "maidn-bootstrap.yaml", "Path to save generated config")
|
|
}
|
|
|
|
func runBootstrap(cmd *cobra.Command, args []string) {
|
|
var cfg config.Config
|
|
var err error
|
|
|
|
if bootstrapConfigPath != "" {
|
|
cfg, err = config.Load(bootstrapConfigPath)
|
|
} else {
|
|
cfg, err = ui.RunBootstrapWizard(config.Config{})
|
|
if err == nil {
|
|
err = config.Save(bootstrapOutputPath, cfg)
|
|
if err == nil {
|
|
fmt.Printf("[INFO] Saved config to %s\n", bootstrapOutputPath)
|
|
}
|
|
}
|
|
}
|
|
if err != nil {
|
|
fmt.Printf("[ERROR] %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
runner := bootstrap.Runner{Config: cfg}
|
|
if err = runner.Run(); err != nil {
|
|
fmt.Printf("[ERROR] %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|