package app import ( "fmt" "gitea.maximumdirect.net/eric/distributor/internal/publish" ) type runSummary struct { dryRun bool planned int publishNew int replaceOlder int forceReplace int skipped int failures int fixedPath int } func (s *runSummary) recordPlan(action publish.Action) { s.planned++ switch action { case publish.ActionPublishNew: s.publishNew++ case publish.ActionReplaceOlder: s.replaceOlder++ case publish.ActionForceReplace: s.forceReplace++ case publish.ActionSkipSame, publish.ActionSkipDestinationNewer: s.skipped++ } } func (s *runSummary) recordFailure() { s.failures++ } func (s *runSummary) recordFixedPath() { s.fixedPath++ } func (s runSummary) Line() string { status := "ok" if s.failures > 0 { status = "failed" } return fmt.Sprintf("Final status: %s planned=%d publish_new=%d replace_older=%d force_replace=%d skipped=%d failed=%d dry_run=%t fixed_path=%d", status, s.planned, s.publishNew, s.replaceOlder, s.forceReplace, s.skipped, s.failures, s.dryRun, s.fixedPath) } type RunSummaryCounters struct { Status string `json:"status"` Planned int `json:"planned"` PublishNew int `json:"publish_new"` ReplaceOlder int `json:"replace_older"` ForceReplace int `json:"force_replace"` Skipped int `json:"skipped"` Failed int `json:"failed"` DryRun bool `json:"dry_run"` FixedPath int `json:"fixed_path"` } func (s RunSummaryCounters) Line() string { return fmt.Sprintf("Final status: %s planned=%d publish_new=%d replace_older=%d force_replace=%d skipped=%d failed=%d dry_run=%t fixed_path=%d", s.Status, s.Planned, s.PublishNew, s.ReplaceOlder, s.ForceReplace, s.Skipped, s.Failed, s.DryRun, s.FixedPath) } func (s runSummary) Result() RunSummaryCounters { status := "ok" if s.failures > 0 { status = "failed" } return RunSummaryCounters{ Status: status, Planned: s.planned, PublishNew: s.publishNew, ReplaceOlder: s.replaceOlder, ForceReplace: s.forceReplace, Skipped: s.skipped, Failed: s.failures, DryRun: s.dryRun, FixedPath: s.fixedPath, } }