// Package main is the entry point for the pixad image proxy server. package main import ( "fmt" "os" "github.com/spf13/cobra" "go.uber.org/fx" "sneak.berlin/go/pixa/internal/config" "sneak.berlin/go/pixa/internal/database" "sneak.berlin/go/pixa/internal/globals" "sneak.berlin/go/pixa/internal/handlers" "sneak.berlin/go/pixa/internal/healthcheck" "sneak.berlin/go/pixa/internal/logger" "sneak.berlin/go/pixa/internal/middleware" "sneak.berlin/go/pixa/internal/server" ) var ( Appname = "pixad" //nolint:gochecknoglobals // set by ldflags Version string //nolint:gochecknoglobals // set by ldflags ) var configPath string //nolint:gochecknoglobals // cobra flag func main() { rootCmd := &cobra.Command{ Use: "pixad", Short: "Pixa image caching proxy server", Run: run, } rootCmd.Flags().StringVarP(&configPath, "config", "c", "", "path to config file") if err := rootCmd.Execute(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } func run(_ *cobra.Command, _ []string) { globals.Appname = Appname globals.Version = Version // Set config path in environment if specified via flag if configPath != "" { _ = os.Setenv("PIXA_CONFIG_PATH", configPath) } fx.New( fx.Provide( config.New, database.New, globals.New, handlers.New, logger.New, server.New, middleware.New, healthcheck.New, ), fx.Invoke(func(*server.Server) {}), ).Run() }