workspace

package
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2026 License: MIT Imports: 10 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckHasConfig

func CheckHasConfig(root string, sub Submodule) bool

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

func LoadSubmoduleCard(root string, sub Submodule) (*report.Card, error)

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

func ConfiguredSubmodules(subs []Submodule) []Submodule

ConfiguredSubmodules returns only submodules that have certify configured.

func DiscoverSubmodules

func DiscoverSubmodules(root string) ([]Submodule, error)

DiscoverSubmodules finds all git submodules in the workspace root, checks which ones have certify configured, and returns them sorted by path.

func ParseSubmoduleStatus

func ParseSubmoduleStatus(output string) []Submodule

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL