119 lines
4 KiB
Go
119 lines
4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/deb-bootc-image-builder/bib/internal/config"
|
|
)
|
|
|
|
// This is an example of how the configuration system would be used
|
|
// in the actual debian-bootc-image-builder application
|
|
|
|
func main() {
|
|
// Load configuration from the default location
|
|
cfg, err := config.LoadConfig("")
|
|
if err != nil {
|
|
log.Fatalf("Failed to load configuration: %v", err)
|
|
}
|
|
|
|
// Example 1: Get the active registry information
|
|
registry, err := cfg.GetActiveRegistry()
|
|
if err != nil {
|
|
log.Fatalf("Failed to get active registry: %v", err)
|
|
}
|
|
fmt.Printf("Active registry: %s (%s)\n", cfg.ActiveRegistry, registry.Description)
|
|
fmt.Printf("Base URL: %s\n", registry.BaseURL)
|
|
fmt.Printf("Namespace: %s\n", registry.Namespace)
|
|
fmt.Printf("Auth required: %v\n", registry.AuthRequired)
|
|
|
|
// Example 2: Generate container names
|
|
bootcBaseName, err := cfg.GetBootcBaseName("stable")
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate bootc base name: %v", err)
|
|
}
|
|
fmt.Printf("Bootc base container: %s\n", bootcBaseName)
|
|
|
|
bootcBuilderName, err := cfg.GetBootcBuilderName("latest")
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate bootc builder name: %v", err)
|
|
}
|
|
fmt.Printf("Bootc builder container: %s\n", bootcBuilderName)
|
|
|
|
// Example 3: Get Debian version mapping
|
|
actualVersion, err := cfg.GetDebianVersion("stable")
|
|
if err != nil {
|
|
log.Fatalf("Failed to get Debian version: %v", err)
|
|
}
|
|
fmt.Printf("Debian stable maps to: %s\n", actualVersion)
|
|
|
|
// Example 4: Get default settings
|
|
fmt.Printf("Default Debian version: %s\n", cfg.Defaults.DebianVersion)
|
|
fmt.Printf("Default image types: %v\n", cfg.Defaults.ImageTypes)
|
|
fmt.Printf("Default output directory: %s\n", cfg.Defaults.OutputDir)
|
|
fmt.Printf("Default rootfs type: %s\n", cfg.Defaults.RootfsType)
|
|
|
|
// Example 5: Check experimental features
|
|
fmt.Printf("Cross-arch support enabled: %v\n", cfg.IsExperimentalFeatureEnabled("cross_arch"))
|
|
fmt.Printf("Librepo support enabled: %v\n", cfg.IsExperimentalFeatureEnabled("librepo"))
|
|
|
|
// Example 6: Get repository information
|
|
mainRepoURL, err := cfg.GetRepositoryURL("main")
|
|
if err != nil {
|
|
log.Fatalf("Failed to get main repository URL: %v", err)
|
|
}
|
|
fmt.Printf("Main repository URL: %s\n", mainRepoURL)
|
|
fmt.Printf("Main repository priority: %d\n", cfg.GetRepositoryPriority("main"))
|
|
|
|
// Example 7: Get build settings
|
|
fmt.Printf("Container size multiplier: %d\n", cfg.Build.ContainerSizeMultiplier)
|
|
fmt.Printf("Minimum rootfs size: %d GB\n", cfg.Build.MinRootfsSizeGB)
|
|
|
|
// Example 8: Get cloud settings
|
|
fmt.Printf("Default AWS region: %s\n", cfg.Cloud.AWS.DefaultRegion)
|
|
fmt.Printf("S3 bucket template: %s\n", cfg.Cloud.AWS.BucketTemplate)
|
|
|
|
// Example 9: Get logging settings
|
|
fmt.Printf("Log level: %s\n", cfg.Logging.Level)
|
|
fmt.Printf("Log format: %s\n", cfg.Logging.Format)
|
|
fmt.Printf("Verbose mode: %v\n", cfg.Logging.Verbose)
|
|
|
|
// Example 10: Get security settings
|
|
fmt.Printf("Require HTTPS: %v\n", cfg.Security.RequireHTTPS)
|
|
fmt.Printf("Verify TLS: %v\n", cfg.Security.VerifyTLS)
|
|
fmt.Printf("Allow insecure: %v\n", cfg.Security.AllowInsecure)
|
|
}
|
|
|
|
// Example of how this would be integrated into the main application:
|
|
|
|
func exampleIntegration() {
|
|
// Load configuration
|
|
cfg, err := config.LoadConfig("")
|
|
if err != nil {
|
|
log.Fatalf("Failed to load configuration: %v", err)
|
|
}
|
|
|
|
// Use configuration in the build process
|
|
imgref, err := cfg.GetBootcBaseName(cfg.Defaults.DebianVersion)
|
|
if err != nil {
|
|
log.Fatalf("Failed to generate image reference: %v", err)
|
|
}
|
|
|
|
// Use default settings
|
|
outputDir := cfg.Defaults.OutputDir
|
|
imageTypes := cfg.Defaults.ImageTypes
|
|
rootfsType := cfg.Defaults.RootfsType
|
|
|
|
// Check experimental features
|
|
useLibrepo := cfg.IsExperimentalFeatureEnabled("librepo")
|
|
crossArch := cfg.IsExperimentalFeatureEnabled("cross_arch")
|
|
|
|
fmt.Printf("Building image: %s\n", imgref)
|
|
fmt.Printf("Output directory: %s\n", outputDir)
|
|
fmt.Printf("Image types: %v\n", imageTypes)
|
|
fmt.Printf("Rootfs type: %s\n", rootfsType)
|
|
fmt.Printf("Use librepo: %v\n", useLibrepo)
|
|
fmt.Printf("Cross-arch: %v\n", crossArch)
|
|
|
|
// The actual build process would continue here...
|
|
}
|