package app import ( "context" "fmt" "io" "gitea.maximumdirect.net/eric/distributor/internal/config" ) type RunOptions struct { ConfigPath string DryRun bool Stdout io.Writer } func Run(ctx context.Context, options RunOptions) error { if err := ctx.Err(); err != nil { return err } if !options.DryRun { return fmt.Errorf("run command: %w", ErrNotImplemented) } configPath := options.ConfigPath if configPath == "" { configPath = config.DefaultConfigPath } cfg, err := config.LoadFile(configPath) if err != nil { return err } return writeRunSummary(options.Stdout, cfg) } func writeRunSummary(w io.Writer, cfg config.Config) error { if w == nil { return nil } if _, err := fmt.Fprintf(w, "Configured pipelines: %d\n", len(cfg.Pipelines)); err != nil { return err } for _, pipeline := range cfg.Pipelines { if _, err := fmt.Fprintf(w, "- %s: source=%s destinations=%d\n", pipeline.ID, pipeline.Source.Backend, len(pipeline.Destinations)); err != nil { return err } for _, destination := range pipeline.Destinations { if _, err := fmt.Fprintf(w, " - %s: backend=%s publish_source=%t publish_html=%t\n", destination.ID, destination.Backend, destination.Publish.Source, destination.Publish.HTML); err != nil { return err } } } return nil }