Documentation
¶
Overview ¶
Package workspace provides multi-repo workspace support for certify. It discovers git submodules, checks their certification status, and aggregates reports across submodules.
Index ¶
- func CheckHasConfig(root string, sub Submodule) bool
- func FormatWorkspaceCardMarkdown(wc WorkspaceCard) string
- func GenerateWorkspaceReportTree(wc WorkspaceCard, outDir string) (int, error)
- func LoadSubmoduleCard(root string, sub Submodule) (*report.Card, error)
- type Submodule
- type SubmoduleSummary
- type WorkspaceCard
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckHasConfig ¶
CheckHasConfig checks whether a submodule has a .certification/config.yml file.
func FormatWorkspaceCardMarkdown ¶
func FormatWorkspaceCardMarkdown(wc WorkspaceCard) string
FormatWorkspaceCardMarkdown renders the workspace-level REPORT_CARD.md.
func GenerateWorkspaceReportTree ¶
func GenerateWorkspaceReportTree(wc WorkspaceCard, outDir string) (int, error)
GenerateWorkspaceReportTree writes the workspace-level report tree. Returns the number of files written.
Structure:
outDir/ index.md workspace index <submodule-name>.md per-submodule summary (configured only)
func LoadSubmoduleCard ¶
LoadSubmoduleCard loads certification state from a submodule and generates a report Card. Returns (nil, nil) if no certification data exists. Tries state.json first (fast), falls back to scanning records/ directory.
Types ¶
type Submodule ¶
type Submodule struct {
Name string // submodule name (typically same as path)
Path string // relative path within workspace
URL string // remote URL (if available)
Commit string // current checked-out commit SHA
HasConfig bool // true if .certification/config.yml exists
}
Submodule represents a git submodule within a workspace.
func ConfiguredSubmodules ¶
ConfiguredSubmodules returns only submodules that have certify configured.
func DiscoverSubmodules ¶
DiscoverSubmodules finds all git submodules in the workspace root, checks which ones have certify configured, and returns them sorted by path.
func ParseSubmoduleStatus ¶
ParseSubmoduleStatus parses the output of `git submodule status`. Each line format: `[+-U ]<commit> <path> (<branch>)` The leading character indicates: ' ' = normal, '+' = different commit, '-' = not initialized, 'U' = merge conflict.
type SubmoduleSummary ¶
type SubmoduleSummary struct {
Name string `json:"name"`
Path string `json:"path"`
Grade string `json:"grade"`
Score float64 `json:"score"`
Units int `json:"units"`
Passing int `json:"passing"`
Failing int `json:"failing"`
PassRate float64 `json:"pass_rate"`
HasCertify bool `json:"has_certify"`
Commit string `json:"commit,omitempty"`
StateAt string `json:"state_at,omitempty"` // when the submodule was last certified
}
SubmoduleSummary holds certification stats for a single submodule.
type WorkspaceCard ¶
type WorkspaceCard struct {
GeneratedAt string `json:"generated_at"`
Submodules []SubmoduleSummary `json:"submodules"`
TotalUnits int `json:"total_units"`
TotalPassing int `json:"total_passing"`
TotalFailing int `json:"total_failing"`
OverallGrade string `json:"overall_grade"`
OverallScore float64 `json:"overall_score"`
PassRate float64 `json:"pass_rate"`
}
WorkspaceCard is an aggregated report card across all submodules.
func AggregateCards ¶
func AggregateCards(subs []SubmoduleSummary) WorkspaceCard
AggregateCards builds a WorkspaceCard from submodule summaries. Submodules without certify setup (HasCertify=false) or with zero units are included in the listing but excluded from score aggregation.