Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions docs/src/content/docs/advanced/manifest.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: Track generated files with a manifest that includes SHA256 checksum
---

import { Code } from '@astrojs/starlight/components';
import manifestSchema from '../../../../public/schemas/manifest/v1/schema.json?raw';
import manifestSchema from '../../../../public/schemas/manifest/v2/schema.json?raw';

## Overview

Expand Down Expand Up @@ -77,6 +77,7 @@ The manifest contains the following fields:
| `Dependencies[].Files` | Array of files generated by this dependency (with checksums) |
| `Dependencies[].Files[].Path` | Path of the generated file, relative to the dependency's output directory |
| `Dependencies[].Files[].Checksum` | Checksum of the file contents, prefixed with the hash algorithm (e.g. `sha256:a1b2c3…`) |
| `Dependencies[].Dependencies` | Nested array of sub-dependencies processed by this dependency (recursive structure, same shape as top-level `Dependencies`) |
| `Dependencies[].DontInheritVariables` | Whether the dependency opted out of inheriting parent variables |
| `Files` | Array of generated files |
| `Files[].Path` | Path of the generated file, relative to the output directory |
Expand All @@ -85,7 +86,7 @@ The manifest contains the following fields:
### YAML example

```yaml
SchemaVersion: "https://boilerplate.gruntwork.io/schemas/manifest/v1/schema.json"
SchemaVersion: "https://boilerplate.gruntwork.io/schemas/manifest/v2/schema.json"
Timestamp: "2026-02-24T12:00:00Z"
TemplateURL: ./templates/service
BoilerplateVersion: v0.6.0
Expand Down Expand Up @@ -118,7 +119,7 @@ Files:

```json
{
"SchemaVersion": "https://boilerplate.gruntwork.io/schemas/manifest/v1/schema.json",
"SchemaVersion": "https://boilerplate.gruntwork.io/schemas/manifest/v2/schema.json",
"Timestamp": "2026-02-24T12:00:00Z",
"TemplateURL": "./templates/service",
"BoilerplateVersion": "v0.6.0",
Expand Down Expand Up @@ -167,12 +168,12 @@ Files:

Boilerplate publishes a formal [JSON Schema](https://json-schema.org/) for the manifest format. The `SchemaVersion` field in every generated manifest contains the schema URL, making it easy to identify which schema version was used and to fetch the schema for validation.

<Code title="manifest/v1/schema.json" lang="json" code={manifestSchema} />
<Code title="manifest/v2/schema.json" lang="json" code={manifestSchema} />

Each run overwrites the previous manifest, so it always reflects the most recent generation. If you need to preserve history across runs, track the manifest in version control (e.g. Git).

## Versioning

The manifest schema is versioned via the URL path (e.g. `.../v1/schema.json`). Every generated manifest records the schema version it conforms to in the `SchemaVersion` field, so consumers can detect which version they are working with.
The manifest schema is versioned via the URL path (e.g. `.../v2/schema.json`). Every generated manifest records the schema version it conforms to in the `SchemaVersion` field, so consumers can detect which version they are working with.

A new schema version is published whenever the schema changes. Breaking changes (removing fields, changing types, etc.) are avoided when possible, but when necessary they will accompany a breaking release of Boilerplate itself: minor releases before 1.0, and major releases afterwards.
Loading