scaffold

package
v0.32.0 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComparePathPresence added in v0.19.0

func ComparePathPresence(ctx context.Context, client forge.Client, owner, repo string, expected []string) (missing []string, err error)

ComparePathPresence checks which expected paths exist in the repo's default branch. It uses forge.Client.ListRepositoryFiles to fetch all file paths in a single call, then checks membership locally. This replaces O(N) GetFileContent calls with O(1) API calls.

func CustomizedDirs added in v0.8.0

func CustomizedDirs() []string

CustomizedDirs returns the set of customized/ subdirectories that should be scaffolded in a per-org .fullsend config repo.

func FileMode added in v0.6.0

func FileMode(path string) string

FileMode returns the Git tree mode for a scaffold file.

func FullsendRepoFile

func FullsendRepoFile(path string) ([]byte, error)

FullsendRepoFile returns the content of a file from the fullsend-repo scaffold. The path is relative to the fullsend-repo root (e.g., ".github/workflows/triage.yml").

func HarnessBaseURL added in v0.18.0

func HarnessBaseURL(harnessName, commitSHA string) (string, error)

HarnessBaseURL returns the raw.githubusercontent.com URL for a scaffold harness template at a specific commit SHA. The URL does not include an integrity hash fragment — use HarnessBaseURLWithHash for that.

func HarnessBaseURLWithHash added in v0.18.0

func HarnessBaseURLWithHash(harnessName, commitSHA string) (string, error)

HarnessBaseURLWithHash returns the full base URL for a scaffold harness template, including the #sha256=... integrity hash fragment.

func HarnessContent added in v0.30.0

func HarnessContent(harnessName string) ([]byte, error)

HarnessContent returns the raw YAML bytes of an embedded scaffold harness template. This is the same content served by raw.githubusercontent.com for the release commit the CLI was built from.

func HarnessContentHash added in v0.18.0

func HarnessContentHash(harnessName string) (string, error)

HarnessContentHash returns the SHA-256 hex digest of the embedded scaffold harness template. This hash matches what raw.githubusercontent.com serves for the release commit the CLI was built from.

func HarnessNames added in v0.18.0

func HarnessNames() ([]string, error)

HarnessNames returns the sorted list of harness template names available in the embedded scaffold (e.g., ["code", "fix", "triage"]).

func IsLayeredPath added in v0.19.0

func IsLayeredPath(path string) bool

IsLayeredPath reports whether path is in a layered content directory.

func IsUpstreamOnlyPath added in v0.19.0

func IsUpstreamOnlyPath(path string) bool

IsUpstreamOnlyPath reports whether path is upstream-only infrastructure.

func LegacyFlatVendoredPaths added in v0.19.0

func LegacyFlatVendoredPaths(workflowPrefix string) ([]string, error)

LegacyFlatVendoredPaths lists pre-.defaults flat layout paths for legacy cleanup.

func ManagedHeader added in v0.18.0

func ManagedHeader(path string) string

ManagedHeader returns the managed-by header to prepend to a scaffold file at install time, or an empty string if the file should not have one. Files that support # comments (YAML, shell) get a header pointing to the upstream source. Markdown, JSON, and .gitkeep files are skipped.

func ManagedPaths added in v0.19.0

func ManagedPaths(_ bool, pathPrefix string) ([]string, error)

ManagedPaths returns embed-derived scaffold paths for analyze/sync. Vendored content is reported separately by the vendor layer.

func ManagedVendoredContentPaths added in v0.19.0

func ManagedVendoredContentPaths(workflowPrefix string) ([]string, error)

ManagedVendoredContentPaths returns embed-derived paths for the current vendor layout.

func PathsFromInstallFiles added in v0.19.0

func PathsFromInstallFiles(files InstallFiles) []string

PathsFromInstallFiles extracts relative paths from install files.

func PerRepoCustomizedDirs added in v0.8.0

func PerRepoCustomizedDirs() []string

PerRepoCustomizedDirs returns the set of customized/ subdirectories that should be scaffolded in a per-repo .fullsend/ setup.

func PerRepoShimTemplate added in v0.8.0

func PerRepoShimTemplate() ([]byte, error)

PerRepoShimTemplate returns the content of the per-repo shim workflow template.

func PrependManagedHeader added in v0.18.0

func PrependManagedHeader(path string, content []byte) []byte

PrependManagedHeader prepends the managed-by header to file content. If the file starts with a shebang (#!), the header is inserted after the first line. Returns content unchanged if no header applies.

func RenderTemplate added in v0.19.0

func RenderTemplate(path string, content []byte, opts RenderOptions) ([]byte, error)

RenderTemplate applies vendoring-aware substitutions to scaffold templates. Substitutions are fixed string replacements (not text/template), so only compile-time constants are injected into workflow YAML.

func ResolveVendoredCleanupPaths added in v0.19.0

func ResolveVendoredCleanupPaths(ctx context.Context, client forge.Client, owner, repo, workflowPrefix, binaryPath string) ([]string, error)

ResolveVendoredCleanupPaths returns paths to delete when disabling --vendor. Prefers the committed manifest; falls back to embed enumeration for legacy installs. binaryPath is included when no manifest is present (per-org or per-repo default).

func VendorManifestPath added in v0.19.0

func VendorManifestPath(workflowPrefix string) string

VendorManifestPath returns the manifest path for the install mode.

func VendoredMarkerPath added in v0.19.0

func VendoredMarkerPath() string

VendoredMarkerPath returns the path used to detect a vendored install.

func WalkFullsendRepo

func WalkFullsendRepo(fn func(path string, content []byte) error) error

WalkFullsendRepo calls fn for each file in the fullsend-repo scaffold that should be installed into a .fullsend repo. Files in layered directories (agents/, skills/, etc.) and upstream-only directories (.github/actions/, .github/scripts/) are skipped — they are provided at runtime by reusable workflows. See ADR 0035.

func WalkFullsendRepoAll added in v0.8.0

func WalkFullsendRepoAll(fn func(path string, content []byte) error) error

WalkFullsendRepoAll calls fn for every file in the fullsend-repo scaffold, including layered and upstream-only files. Used by tests that validate embedded content.

func WalkLayeredContent added in v0.19.0

func WalkLayeredContent(fn func(path string, content []byte) error) error

WalkLayeredContent calls fn for layered directories and .github/scripts from fullsend-repo.

func WalkUpstream added in v0.19.0

func WalkUpstream(fn func(path string, content []byte) error) error

WalkUpstream calls fn for upstream assets from the current module checkout. Used by tests; install-time vendoring reads from ResolveVendorRoot instead.

Types

type CollectInstallFilesOptions added in v0.19.0

type CollectInstallFilesOptions struct {
	RenderOptions
	PathPrefix string
}

CollectInstallFilesOptions controls which scaffold files are collected.

type InstallFile added in v0.19.0

type InstallFile struct {
	Path    string
	Content []byte
	Mode    string
}

InstallFile is a file to commit during install.

type InstallFiles added in v0.19.0

type InstallFiles []InstallFile

InstallFiles is the slice type returned by install collectors.

func CollectInstallFiles added in v0.19.0

func CollectInstallFiles(opts CollectInstallFilesOptions) (InstallFiles, error)

CollectInstallFiles gathers scaffold files for org or per-repo installation.

func CollectPerRepoInstallFiles added in v0.19.0

func CollectPerRepoInstallFiles(vendored bool, upstreamRef, upstreamTag string) (InstallFiles, error)

CollectPerRepoInstallFiles gathers files for per-repo installation.

func CollectVendoredAssets added in v0.19.0

func CollectVendoredAssets(root, workflowPrefix string) (InstallFiles, error)

CollectVendoredAssets gathers files for --vendor installs. Upstream mirror content lives under .defaults/ (same layout as runtime sparse checkout). Reusable workflows are always written under .github/workflows/ because GitHub Actions requires local reusable workflow references (./path) to live there. Other vendored assets use workflowPrefix (.fullsend/ for per-repo, "" for per-org).

type RenderOptions added in v0.19.0

type RenderOptions struct {
	Vendored    bool
	PerRepo     bool
	UpstreamRef string // commit SHA to pin workflow refs to; empty = use DefaultUpstreamRef
	UpstreamTag string // version tag for traceability comment (e.g. "v0.19.0")
	RunnerImage string // GitHub Actions runner image; empty = use DefaultGHRunner
}

RenderOptions controls install-time substitution for shim and thin-caller templates.

func RenderOptionsForInstall added in v0.19.0

func RenderOptionsForInstall(vendored, perRepo bool, upstreamRef, upstreamTag string) RenderOptions

RenderOptionsForInstall builds render options from the --vendor flag.

type VendorManifest added in v0.19.0

type VendorManifest struct {
	Version    string   `yaml:"version"`
	CLIVersion string   `yaml:"cli_version,omitempty"`
	SourceRef  string   `yaml:"source_ref,omitempty"`
	BinaryPath string   `yaml:"binary_path"`
	Paths      []string `yaml:"paths"`
}

VendorManifest records paths written by a --vendor install for cleanup and analyze.

func NewVendorManifest added in v0.19.0

func NewVendorManifest(cliVersion, sourceRef, binaryPath string, contentPaths []string) *VendorManifest

NewVendorManifest builds a manifest from install outputs.

func ParseVendorManifest added in v0.19.0

func ParseVendorManifest(data []byte) (*VendorManifest, error)

ParseVendorManifest parses manifest YAML from the config repo.

func ReadVendorManifest added in v0.19.0

func ReadVendorManifest(ctx context.Context, client forge.Client, owner, repo, workflowPrefix string) (*VendorManifest, bool, error)

ReadVendorManifest loads the manifest from a repo when present.

func (*VendorManifest) CleanupPaths added in v0.19.0

func (m *VendorManifest) CleanupPaths(workflowPrefix string) []string

CleanupPaths returns all repo paths to delete, including the manifest file.

func (*VendorManifest) MarshalYAML added in v0.19.0

func (m *VendorManifest) MarshalYAML() ([]byte, error)

MarshalYAML serializes the manifest.

Jump to

Keyboard shortcuts

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