Skip to content
BOOSTER 1.8.3
Menu

Commands#

This page lists every command and option Booster takes; the table is generated from the tool by the docs build. With no flags, detect, plan and run start from what Booster finds in the app and climb to the newest PHP and Laravel the policy supports; see What a run does by default.

Command What it does
booster detect Say which of the five stack permutations an app is, and its PHP, Laravel and Vue versions.
booster hops List every hop BOOSTER knows.
booster init Write the coding-tab playbooks (.agents/skills). With --check, fail when they are stale.
booster plan Show the ordered hops from the app to a supported version. Changes nothing.
booster run Run the plan: Rector, composer.json edits and a test gate per hop. Edits the working copy only.
booster scan Advisory scans: show what will break on a PHP version, and what PHPStan says there. Changes nothing.

booster detect#

Say which of the five stack permutations an app is, and its PHP, Laravel and Vue versions.

Usage: booster detect [--path PATH] [--format FORMAT]

Option Meaning Default
--path=VALUE Path to the application. .
--format=VALUE Output format (text, json). text
--silent Do not output any message

booster hops#

List every hop BOOSTER knows.

Usage: booster hops [--format FORMAT]

Option Meaning Default
--format=VALUE Output format (text, json). text
--silent Do not output any message

booster init#

Write the coding-tab playbooks (.agents/skills). With --check, fail when they are stale.

Usage: booster init [--path PATH] [--dir DIR] [--check]

Option Meaning Default
--path=VALUE Path to the application. .
--dir=VALUE Skills directory (default: /.agents/skills).
--check Change nothing; exit 1 when a playbook is missing or out of date.
--silent Do not output any message

booster plan#

Show the ordered hops from the app to a supported version. Changes nothing.

Usage: booster plan [--path PATH] [--format FORMAT] [--policy POLICY] [--today TODAY] [--goal GOAL] [--from-php FROM-PHP] [--to-php TO-PHP] [--from-laravel FROM-LARAVEL] [--to-laravel TO-LARAVEL] [--to-phpunit TO-PHPUNIT] [--with-node] [--sesame] [--wayneui] [--skip SKIP] [--no-package-check] [--until UNTIL] [--only ONLY] [--no-scan]

Option Meaning Default
--path=VALUE Path to the application. .
--format=VALUE Output format (text, json). text
--policy=VALUE Path to CREED's policy.json (default: BOOSTER_POLICY, then the waynestate/creed package).
--today=VALUE Override today's date (YYYY-MM-DD).
--goal=VALUE Shorthand such as php-74-to-84: sets --from-php and --to-php.
--from-php=VALUE The PHP version the app runs on (major.minor).
--to-php=VALUE Target PHP version (default: the newest the policy supports).
--from-laravel=VALUE The Laravel major the app runs on.
--to-laravel=VALUE Target Laravel major (default: the newest the policy supports).
--to-phpunit=VALUE Target PHPUnit major (default: the newest that runs on the target PHP).
--with-node Include the Node front-end hops (Node pin, Mix to Vite, Tailwind, Vue) even when you passed a target version
--sesame Include the wayne-cas to SESAME swap.
--wayneui Include the WayneUI 1.x to 2.x move.
--skip=VALUE Hop id to leave out (repeatable).
--no-package-check Skip the Packagist dependency check (for offline use).
--until=VALUE Cut the plan after this hop id: that step and everything before it stay.
--only=VALUE Plan and run just this one hop id; the app must sit on the hop's starting versions.
--no-scan Skip the advisory scans (PHPCompatibility and PHPStan).
--silent Do not output any message

booster run#

Run the plan: Rector, composer.json edits and a test gate per hop. Edits the working copy only.

Usage: booster run [--path PATH] [--format FORMAT] [--policy POLICY] [--today TODAY] [--goal GOAL] [--from-php FROM-PHP] [--to-php TO-PHP] [--from-laravel FROM-LARAVEL] [--to-laravel TO-LARAVEL] [--to-phpunit TO-PHPUNIT] [--with-node] [--sesame] [--wayneui] [--skip SKIP] [--no-package-check] [--until UNTIL] [--only ONLY] [--dry-run] [--max-changes MAX-CHANGES] [--test-env TEST-ENV] [--memory-limit MEMORY-LIMIT] [--skip-gate] [--image IMAGE] [--allow-failing-baseline] [--allow-dirty] [--test-command TEST-COMMAND] [--proctor-command PROCTOR-COMMAND] [--proctor-advisory]

Option Meaning Default
--path=VALUE Path to the application. .
--format=VALUE Output format (text, json). text
--policy=VALUE Path to CREED's policy.json (default: BOOSTER_POLICY, then the waynestate/creed package).
--today=VALUE Override today's date (YYYY-MM-DD).
--goal=VALUE Shorthand such as php-74-to-84: sets --from-php and --to-php.
--from-php=VALUE The PHP version the app runs on (major.minor).
--to-php=VALUE Target PHP version (default: the newest the policy supports).
--from-laravel=VALUE The Laravel major the app runs on.
--to-laravel=VALUE Target Laravel major (default: the newest the policy supports).
--to-phpunit=VALUE Target PHPUnit major (default: the newest that runs on the target PHP).
--with-node Include the Node front-end hops (Node pin, Mix to Vite, Tailwind, Vue) even when you passed a target version
--sesame Include the wayne-cas to SESAME swap.
--wayneui Include the WayneUI 1.x to 2.x move.
--skip=VALUE Hop id to leave out (repeatable).
--no-package-check Skip the Packagist dependency check (for offline use).
--until=VALUE Cut the plan after this hop id: that step and everything before it stay.
--only=VALUE Plan and run just this one hop id; the app must sit on the hop's starting versions.
--dry-run Show the diffs Rector would make and change nothing.
--max-changes=VALUE Hard limit on files changed per hop, with no prompt (0 = no limit). Without it, a hop over 200 files asks first, or stops when not interactive.
--test-env=VALUE Environment variable (KEY=VALUE) passed to the baseline and every gate container with -e; repeat it. Values never appear in the report.
--memory-limit=VALUE Memory limit for the Rector process (for example 2G), or -1 for no limit. 2G
--skip-gate Do not run the tests in the target image after each hop, or the PROCTOR check at the end.
--image=VALUE Run the gate in this Docker image instead of building booster-target (it needs php and composer on PATH): one name for every PHP version, a {php} template such as registry/php-apache:{php}, or a map such as 8.0=foo:1,8.1=bar:2.
--allow-failing-baseline Continue even when the baseline (the app's tests on its current PHP) fails; later gate failures are labeled as pre-existing.
--allow-dirty Run even when the working copy has uncommitted changes.
--test-command=VALUE Command that runs the app tests inside the image (default: composer test, else vendor/bin/phpunit).
--proctor-command=VALUE Extra command run in the image after the tests, for example a PROCTOR check.
--proctor-advisory Report the PROCTOR result but do not fail the run on it.
--silent Do not output any message

booster scan#

Advisory scans: show what will break on a PHP version, and what PHPStan says there. Changes nothing.

Usage: booster scan [--path PATH] [--php PHP] [--removals] [--format FORMAT] [--phpstan]

Option Meaning Default
--path=VALUE Path to the application. .
--php=VALUE The PHP version to ask about (major.minor).
--removals List uses of functions and constructs removed in PHP up to --php, instead of the PHPCompatibility scan.
--format=VALUE Output format (text, json). text
--phpstan Also run the PHPStan scan (Pinstripe preset) at the same PHP version.
--silent Do not output any message

Options every command accepts#

Option Meaning Default
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Only errors are displayed. All other output is suppressed
`-v -vv -vvv, --verbose`
-V, --version Display this application version
--ansi Force (or disable --no-ansi) ANSI output
--no-ansi Negate the "--ansi" option
-n, --no-interaction Do not ask any interactive question

Example: an app moving from Laravel 8 to 13 takes the climb in parts. booster plan --path=../my-app --until=laravel-8-to-9 keeps every hop up to and including the move to Laravel 9, and booster run with the same flag applies exactly those hops.

Exit codes#

Exit codes: 0 pass, 1 the baseline failed, a hop was capped, errored or failed its gate, or the PROCTOR check found new findings, 2 bad usage (bad option, unreadable policy, broken composer.json, a target the policy does not know).