a73x

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) }