// Copyright (c) 2026 Probo Inc . // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // probod-bootstrap generates a probod configuration file from environment variables. package main import ( "flag" "fmt" "os" "go.probo.inc/probo/pkg/bootstrap" ) var ( version string = "unknown" ) func main() { outputPath := flag.String("output", "/etc/probod/config.yml", "output path for the generated config file") format := flag.String("format", "yaml", "output format for the generated config file (yaml or json)") showVersion := flag.Bool("version", false, "print version and exit") flag.Parse() if *showVersion { fmt.Println(version) return } var configFormat bootstrap.Format switch *format { case "yaml": configFormat = bootstrap.FormatYAML case "json": configFormat = bootstrap.FormatJSON default: fmt.Fprintf(os.Stderr, "error: unsupported format %q, must be yaml or json\n", *format) os.Exit(1) } builder := bootstrap.NewBuilder(bootstrap.NewResolver(nil)) cfg, err := builder.Build() if err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) os.Exit(1) } if err := bootstrap.WriteConfig(cfg, *outputPath, configFormat); err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) os.Exit(1) } fmt.Printf("Configuration file generated at: %s\n", *outputPath) }