package main import ( "context" "log/slog" "net/http" "os" "os/signal" "syscall" "time" "git.t-juice.club/torjus/nixos-exporter/collector" "git.t-juice.club/torjus/nixos-exporter/config" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { cfg, err := config.Parse() if err != nil { slog.Error("Failed to parse config", "error", err) os.Exit(1) } // Register generation collector genCollector := collector.NewGenerationCollector() prometheus.MustRegister(genCollector) slog.Info("Registered generation collector") // Register flake collector if enabled if cfg.FlakeCollector { flakeCollector := collector.NewFlakeCollector(cfg.FlakeURL, cfg.FlakeCheckInterval) prometheus.MustRegister(flakeCollector) slog.Info("Registered flake collector", "url", cfg.FlakeURL, "check_interval", cfg.FlakeCheckInterval) } mux := http.NewServeMux() mux.Handle("/metrics", promhttp.Handler()) mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte(`