internal/shape/classify.go
Ref: Size: 2.3 KiB History
package shape
import "strings"
// synopsis returns the first sentence of a package doc string: first paragraph
// only, internal whitespace collapsed, truncated at the first period that is
// followed by a space or the end of the text. Empty input yields "".
func synopsis(doc string) string {
if i := strings.Index(doc, "\n\n"); i >= 0 {
doc = doc[:i]
}
doc = strings.Join(strings.Fields(doc), " ")
for i := 0; i < len(doc); i++ {
if doc[i] == '.' && (i+1 == len(doc) || doc[i+1] == ' ') {
return doc[:i+1]
}
}
return doc
}
// classify returns the plane for a module-relative import path (the path with
// the module prefix already stripped, e.g. "internal/server/api"). Matching is
// by prefix, first match wins, so sub-packages inherit their parent's plane.
// Anything matching no rule lands in PlaneUnclassified — a first-class bucket,
// never silently dropped (see TestNoUnclassifiedPackagesInModule).
func classify(rel string) Plane {
switch {
case strings.HasPrefix(rel, "internal/server"):
return PlaneControl
case strings.HasPrefix(rel, "internal/agent"):
return PlaneData
case strings.HasPrefix(rel, "internal/pb"),
strings.HasPrefix(rel, "internal/transport"),
strings.HasPrefix(rel, "internal/joinblob"),
strings.HasPrefix(rel, "internal/cloudinit"),
strings.HasPrefix(rel, "internal/guest"),
strings.HasPrefix(rel, "internal/names"),
strings.HasPrefix(rel, "internal/random"),
strings.HasPrefix(rel, "internal/relmanifest"),
strings.HasPrefix(rel, "internal/version"):
return PlaneWire
case strings.HasPrefix(rel, "cmd/"):
return PlaneBinaries
case strings.HasPrefix(rel, "internal/arch"),
strings.HasPrefix(rel, "internal/mcpserver"),
strings.HasPrefix(rel, "internal/covsnap"),
strings.HasPrefix(rel, "internal/gateclient"),
strings.HasPrefix(rel, "internal/oidcprovider"),
strings.HasPrefix(rel, "internal/site"),
strings.HasPrefix(rel, "internal/shape"),
strings.HasPrefix(rel, "internal/smoke"),
strings.HasPrefix(rel, "internal/cli"):
return PlaneTooling
default:
return PlaneUnclassified
}
}
// Classify reports the plane for a module-relative import path; exported so
// the architecture fitness tests can drive plane-wide rules from the same
// source of truth as the diagram.
func Classify(rel string) Plane { return classify(rel) }