Bulk edit SLS blueprint YAML files in place.
Only the includes field is rewritten. Everything else in the file stays unchanged.
go build -o bpctl .bpctl includes add <tag> [tag...]
bpctl includes remove <tag> [tag...]# Add tags to every blueprint under the current directory
bpctl includes add shared_plugins default_limits
# Filter by blueprint type
bpctl includes add shared_plugins --type minigame
# Filter by server software
bpctl includes add shared_plugins --software paper
# Filter by software + version range
bpctl includes add shared_plugins --software paper --version '>=1.18 <=1.20.4'
# Target a specific directory or file
bpctl includes add shared_plugins -p ./blueprints
bpctl includes remove default_limits -p ./blueprints/arcade.yml
# Preview without writing
bpctl includes add shared_plugins -nincludes is a top-level key, inserted after the blueprint: section (not nested under it).
By default, existing style is preserved. New includes keys are written as a block list:
blueprint:
id: "arcade"
type: "minigame"
includes:
- shared_plugins
- default_limits
server:
software: "paper"Force a style:
bpctl includes add shared_plugins default_limits --inline
bpctl includes add shared_plugins default_limits --blockincludes: [shared_plugins,default_limits]Edits keep a single blank line between top-level sections.
| Flag | Matches |
|---|---|
--type |
blueprint.type |
--software |
server.software |
--version |
server.version against a constraint |
-p, --path |
Directory or file to scan (default: .) |
Filters can be combined. Empty filters match everything.
Supported comparators: >, >=, <, <=, ==, =.
A bare version means equality (1.18 is the same as ==1.18).
Ranges are space-separated and combined with AND:
<=1.16.5
>=1.17
>=1.18 <=1.20.4
(>=1.17 <=1.17.1)
| Flag | Description |
|---|---|
-p, --path |
Directory or file to scan |
--type |
Filter by blueprint type |
--software |
Filter by server software |
--version |
Filter by version constraint |
-i, --inline |
Force flow style includes: [a,b] |
--block |
Force block list style |
-n, --dry-run |
Show changes without writing |
-v, --verbose |
Show skipped non-blueprint YAML files |
-q, --quiet |
Only print errors |
- Scans
*.ymland*.yamlrecursively -ppointing at a non-YAML file is an error- Skips files that are not blueprints (use
-vto list them) - Warns on YAML parse/read errors, unparsable
server.versionvalues, and per-file includes edit failures without aborting the run - Existing tags are not duplicated on add
- Removing the last include drops the
includeskey