Help us shape the future of Go! Take the 2026 Go Developer Survey

starterstore

package
v0.32.5 Latest Latest
Warning

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

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

Documentation

Overview

Package starterstore is the file-system-facing half of the starter manifest: it reads the machine-readable document stored at .sprout/starter.json under a project root.

It builds on pkg/startermanifest, which owns the manifest schema and its validator (the "pure data + validation contract", with no I/O of its own). This package owns the I/O:

  • LoadStarterManifest reads and validates .sprout/starter.json; a missing file (or missing .sprout directory) yields the distinguishable ErrNoManifest sentinel, not a failure.

LoadStarterManifest is the single source of build/test/dev/preview commands for the manifest's consumers (verification, preview, and deploys). A missing manifest means "no commands" — the loader never guesses or fills in defaults, and an invalid manifest is a hard error, so no caller can ever observe a guessed manifest.

The on-disk location is project-relative (.sprout/ under the project root), so a manifest travels with the code and lands in git history. The package is standard-library-only, so it can be imported by the CLI, by WASM (browser) builds, and by the manifest's consumers.

Index

Constants

This section is empty.

Variables

View Source
var ErrNoManifest = errors.New("no starter manifest found")

ErrNoManifest is returned by LoadStarterManifest when the project has no .sprout/starter.json (or no .sprout directory at all). It is an expected, distinguishable not-found (not a failure): callers detect it with errors.Is(err, ErrNoManifest) and treat it as "no starter manifest, no commands", exactly as planstore.ErrNoPlan marks a missing plan. A project without a starter manifest works as it does today (projects without a starter keep working), so a missing file is the normal "this project has no starter" case rather than an error callers must special-case.

Functions

func LoadStarterManifest

func LoadStarterManifest(projectRoot string) (*startermanifest.StarterManifest, error)

LoadStarterManifest reads and validates the starter manifest from .sprout/starter.json under projectRoot. It is the single source of build/test/dev/preview commands for the manifest's consumers: the fields of the returned manifest are the authoritative values, and the loader never fills in defaults for absent fields (a missing file yields no commands, never a guess).

  • When the file does not exist (or .sprout/ does not exist), LoadStarterManifest returns (nil, ErrNoManifest) — the normal "project has no starter" case.
  • When the file is corrupt JSON or fails validation, LoadStarterManifest returns (nil, err), where err wraps a JSON decode error or a *startermanifest.ValidationError. An invalid manifest is a hard error, never a guessed one.
  • When the file is valid, LoadStarterManifest returns the validated manifest and a nil error.

On any error the returned manifest is nil, so a caller can never observe an invalid or guessed manifest through the loader.

func StarterManifestPath

func StarterManifestPath(root string) string

StarterManifestPath returns the path to the project's .sprout/starter.json for the given project root.

Types

This section is empty.

Jump to

Keyboard shortcuts

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