refactor(source): dedup shared helpers across static + dockerfile plugins
Extract the verbatim-duplicated helpers into shared homes: - buildEnv -> plugin.BuildWorkloadEnv (base plugin pkg; a sourceName param preserves each plugin's slog prefix / log-scraper text) - idShort -> plugin.IDShort - commitStatusReporter -> staticsite.CommitStatusReporter, re-parameterized on primitives (owner/repo/sha/targetURL/enabled) so staticsite needs no dependency on the plugin package; reporter tests ported to staticsite (plus a new nil-provider case) containerNameFor/imageTagFor are intentionally left per-plugin: their prefixes differ (dw-site- vs tf-build-) and name real Docker resources, so merging them would risk mis-routing. Behavior-preserving; the static/dockerfile test suites pass unchanged. Reviewed: go APPROVE (0 CRITICAL/HIGH).
This commit is contained in:
@@ -6,27 +6,16 @@ import (
|
||||
"github.com/alexei/tinyforge/internal/workload/plugin"
|
||||
)
|
||||
|
||||
// idShort is the first 8 chars of the workload ID. Same shape as the
|
||||
// static plugin — workload names are not UNIQUE in the schema, the ID
|
||||
// short suffix is what keeps two same-named workloads from clobbering
|
||||
// each other's container/image artifacts.
|
||||
func idShort(w plugin.Workload) string {
|
||||
if len(w.ID) < 8 {
|
||||
return w.ID
|
||||
}
|
||||
return w.ID[:8]
|
||||
}
|
||||
|
||||
// containerNameFor is the deterministic container name. Prefix `tf-build-`
|
||||
// distinguishes a dockerfile-built container from `dw-site-` (static) and
|
||||
// per-stage image names at a glance in `docker ps`.
|
||||
func containerNameFor(w plugin.Workload) string {
|
||||
return fmt.Sprintf("tf-build-%s-%s", w.Name, idShort(w))
|
||||
return fmt.Sprintf("tf-build-%s-%s", w.Name, plugin.IDShort(w))
|
||||
}
|
||||
|
||||
// imageTagFor is the deterministic image tag the build step emits. Same
|
||||
// shape as the container name so `docker images` shows the linkage at a
|
||||
// glance.
|
||||
func imageTagFor(w plugin.Workload) string {
|
||||
return fmt.Sprintf("tf-build-%s-%s:latest", w.Name, idShort(w))
|
||||
return fmt.Sprintf("tf-build-%s-%s:latest", w.Name, plugin.IDShort(w))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user