Every command this install answers to: 305, grouped by the module that owns them: 53 groups (Symfony v8.1.9).
The page is generated from the running application, so it cannot name a command that does not exist and it cannot fall behind one that was added. Run any of them as:
docker exec coolms_app php bin/console <command>
2 hidden commands omitted: the framework's own internals, which the application declines to advertise.
Global options — --help, --env, --quiet, --verbose, --no-interaction and the rest — mean the same thing everywhere and are not repeated per command.
Groups without parentheses are the platform's own modules, derived from each command's class rather than from its name — the names have drifted, and coolms:group:create belongs to Identity however it reads. Parenthesised groups are third-party, grouped by the prefix their own authors chose.
1 platform command could not be traced to a module from its class and is grouped by prefix instead: coolms:gen:entity.
Analytics#
coolms:analytics:build-rollups#
Materialise the daily analytics rollups from the raw event store.
coolms:analytics:build-rollups [--days DAYS]
| Option | Description | |
|---|---|---|
--days |
value | Number of trailing days to (re)build, inclusive of today (a large value backfills). |
coolms:analytics:build-subjects#
Materialise the CDP subject profiles from the raw analytics event store.
coolms:analytics:build-subjects [--days DAYS]
| Option | Description | |
|---|---|---|
--days |
value | Number of trailing days of events to build subjects from (a large value backfills). |
coolms:analytics:prune-events#
Delete generic analytics events older than the configured retention window.
coolms:analytics:prune-events [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:analytics:prune-subjects#
Report (default) or remove CDP subject profiles whose consent has lapsed unrenewed, with their events; --apply to remove
coolms:analytics:prune-subjects [--apply] [--force] [--show-kept]
| Option | Description | |
|---|---|---|
--apply |
flag | Actually remove the listed profiles and their events (default is report-only) |
--force |
flag | Do not ask. Required with --apply under --no-interaction. |
--show-kept |
flag | List every kept subject with its reason (the summary counts them by default) |
coolms:analytics:recompute-segments#
Recompute CDP segment membership across all subject profiles.
coolms:analytics:recompute-segments
Api#
coolms:api:actions#
The declared actions; with --rule-four, the always-elevated list by kind
coolms:api:actions [--rule-four]
| Option | Description | |
|---|---|---|
--rule-four |
flag | Only the always-elevated list, by kind |
coolms:api:call-access#
What the caller-access evaluator answers for one account over every API route, and where its two layers disagree
coolms:api:call-access [--as AS] [--method METHOD] [--disagreements] [--by-module]
| Option | Description | |
|---|---|---|
--as |
value | The account asked for, by its email address |
--method |
value | The method asked for, or ALL |
--disagreements |
flag | Print only the routes where the two layers disagree |
--by-module |
flag | Count the answers and disagreements per defining module |
coolms:api:client-versions#
Requests per first-party app version over the last N days (X-CoolMS-Client), beside each minimum
coolms:api:client-versions [--days DAYS]
| Option | Description | |
|---|---|---|
--days |
value | How many days back, today included |
coolms:api:route-node-modes#
The 0777 route nodes, classified for a customer-like caller (ADR-200); seed or shrink its list.
coolms:api:route-node-modes [--seed-list] [--shrink-list]
| Option | Description | |
|---|---|---|
--seed-list |
flag | Write the approved list, when there is none. |
--shrink-list |
flag | Drop entries no longer approvable; add none. |
coolms:api:writes-without-if-match#
Writes applied without If-Match on one surface, per day and client; did the last full day count none
coolms:api:writes-without-if-match [--surface SURFACE] [--days DAYS]
| Option | Description | |
|---|---|---|
--surface |
value | The surface (calendar.event, ...) |
--days |
value | How many full days to list |
Backup#
coolms:backup:create#
Export a portable backup bundle (config+content by default; --tier=all for a full clone).
coolms:backup:create [--tier TIER] [--only ONLY] [--out OUT]
| Option | Description | |
|---|---|---|
--tier |
value | Comma list of tiers to include (config, content, runtime) or "all". |
--only |
value | Restrict to these backup keys (comma list), e.g. --only=calendar. |
--out |
value | Bundle output directory (default: var/backups/backup-). |
coolms:backup:restore#
Restore a backup bundle (idempotent upsert). WRITES to the DB — use --dry-run first.
coolms:backup:restore [--dry-run] [--only ONLY] [--reconcile-deletes] [--force] [--] <bundle>
| Option | Description | |
|---|---|---|
bundle |
required | Path to the backup bundle directory (contains manifest.json). |
--dry-run |
flag | Print the restore plan without writing anything. |
--only |
value | Restrict to these backup keys (comma list). |
--reconcile-deletes |
flag | ALSO delete local rows absent from the bundle (close the additive-only gap). DESTRUCTIVE; only capable contributors participate. |
--force |
flag | Skip the confirmation prompt (for automation). |
Calendar#
coolms:calendar:prune-orphan-personal-calendars#
Report (default) or remove personal calendars whose owner account no longer exists; --apply to remove
coolms:calendar:prune-orphan-personal-calendars [--apply] [--force]
| Option | Description | |
|---|---|---|
--apply |
flag | Actually remove the listed calendars, with their items and shares (default is report-only) |
--force |
flag | Do not ask. Required with --apply under --no-interaction. |
coolms:calendar:seed-personal#
Create a personal calendar for every non-system user (idempotent).
coolms:calendar:seed-personal
Call#
coolms:call:ami:listen#
Listen to the Asterisk Manager Interface and track calls (M9.a.3 daemon)
coolms:call:ami:listen
coolms:call:import-recording#
Attach a .wav recording to a tracked call by its AMI call id (M9.b)
coolms:call:import-recording <call-id> <file>
| Option | Description | |
|---|---|---|
call-id |
required | The AMI correlation id (Linkedid/Uniqueid) of the call |
file |
required | Path to the .wav recording file |
coolms:call:pbx:provision#
Mint (or rotate) the phone system's machine identity and its bearer tokens.
coolms:call:pbx:provision [--to TO] [--rotate]
| Option | Description | |
|---|---|---|
--to |
value | The file the token pair is written to (mode 0600); by default where the phone system's sidecar reads it. |
--rotate |
flag | Revoke ALL existing tokens of the phone system before issuing the new pair (a leaked credential). |
coolms:call:recordings:converge#
Give the recordings their declared owner, group, modes and audited mark (dry run unless --execute)
coolms:call:recordings:converge [--execute] [--force]
| Option | Description | |
|---|---|---|
--execute |
flag | Apply the changes; without it nothing is written. |
--force |
flag | Do not ask; needed for --execute unattended. |
coolms:call:remove-test-rig-records#
Remove the call records the calltest rig made (channel Local/700@calltest-...); a real call is never selected.
coolms:call:remove-test-rig-records [--execute] [--force]
| Option | Description | |
|---|---|---|
--execute |
flag | Remove them. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:call:webphone:provision#
Provision (or rotate) a user WebRTC-SIP softphone credential and write it for Asterisk; no secret is printed.
coolms:call:webphone:provision [--rotate] [--] <user>
| Option | Description | |
|---|---|---|
user |
required | The user UUID or email address. |
--rotate |
flag | Generate a fresh secret even if one already exists. |
coolms:call:webphone:render-asterisk#
Render all provisioned WebRTC-SIP credentials into the Asterisk pjsip endpoints include.
coolms:call:webphone:render-asterisk [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Print the rendered file, passwords left out, instead of writing it. |
Chat#
coolms:fixtures:chat-conversation#
Give a test account one direct conversation with a message (dev/test only)
coolms:fixtures:chat-conversation [--with WITH] [--] <email>
| Option | Description | |
|---|---|---|
email |
required | The account the conversation is for |
--with |
value | The other participant, who sends the message |
Comment#
coolms:comment:prune-spam#
Delete spam-bucket comments older than the given number of days.
coolms:comment:prune-spam [--days DAYS] [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--days |
value | Delete spam comments older than this many days (a value < 1 disables pruning). |
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
Content#
coolms:content:cleanup-e2e-fixtures#
Delete leftover e2e-test SiteSection directories (test-e2e-, e2e-lifecycle-) under /content.
coolms:content:cleanup-e2e-fixtures [--execute] [--force] [--dry-run]
| Option | Description | |
|---|---|---|
--execute |
flag | Delete. Without it the command lists the candidates and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | The default now; accepted so existing invocations keep working, and it wins over --execute. |
coolms:content:conform-bodies#
Convert stored page bodies and templates that fail their editor profile (dry run unless --execute)
coolms:content:conform-bodies [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--dry-run |
flag | The default; accepted, and it wins over --execute. |
--execute |
flag | Write the converted bodies. Without it, nothing is written. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:content:ensure-categories#
Ensure the blog categories taxonomy tree + starter categories exist (idempotent).
coolms:content:ensure-categories
coolms:content:merge-articles-into-pages#
Move personal articles into the personal pages tree, re-pointing publication links
coolms:content:merge-articles-into-pages [--apply] [--user USER]
| Option | Description | |
|---|---|---|
--apply |
flag | Actually move the articles |
--user |
value | Restrict to a single user UUID |
coolms:content:package:drop#
Remove a content package from the VFS (dry-run unless --force).
coolms:content:package:drop [--force] [--] <path>
| Option | Description | |
|---|---|---|
path |
required | VFS path of the package, e.g. /content/coolms-site/home |
--force |
flag | Actually delete it. Without this the command only reports. |
coolms:content:seed-news-demo#
Seed a demo /news autoindex directory + sample Pages so the widget:vfs directory-index (ADR-141) renders live and the articles appear under Content → Pages.
coolms:content:seed-news-demo
Decision#
coolms:decision:evaluate-drd#
Evaluate a deployed DMN DRD: run its decisions in dependency order and print each result.
coolms:decision:evaluate-drd [-i|--input INPUT] [--] <key>
| Option | Description | |
|---|---|---|
key |
required | The deployed DRD definition key (e.g. "pricing.drd"). |
--input / -i |
value | JSON object of input variables shared across the DRD's decisions. |
Document#
coolms:document:cleanup-test-scratch#
Delete leftover integration-test scratch directories (tmp-naming-convention-*) under /docs.
coolms:document:cleanup-test-scratch [--execute] [--force] [--dry-run]
| Option | Description | |
|---|---|---|
--execute |
flag | Delete. Without it the command lists the candidates and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | The default now; accepted so existing invocations keep working, and it wins over --execute. |
coolms:document:font#
Install a document font, list the installed ones, or remove a family
coolms:document:font [<action> [<target>]]
| Option | Description | |
|---|---|---|
action |
optional | list, install, remove, browse or fetch |
target |
optional | a path to a .ttf/.otf for install, a family name for remove and fetch, a search term for browse |
coolms:document:font-catalogue:refresh#
Fetch the Google Fonts family list into local storage. Run on a schedule; safe to run by hand.
coolms:document:font-catalogue:refresh
coolms:document:gc#
Clean up files under /docs/.templates/ that are not valid template Nodes.
coolms:document:gc [--execute] [--force] [--limit LIMIT] [--verbose-paths]
| Option | Description | |
|---|---|---|
--execute |
flag | Actually delete orphans. Without this flag the command is a dry-run. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--limit |
value | Max orphans processed per run. |
--verbose-paths |
flag | List every orphan path. Off by default to keep large fleets tractable. |
coolms:document:reconcile-template-roots#
Create missing /.templates directories for existing document spaces
coolms:document:reconcile-template-roots [--apply] [--user USER]
| Option | Description | |
|---|---|---|
--apply |
flag | Actually create the missing directories |
--user |
value | Restrict to a single user UUID |
coolms:document:set-entity-ref#
Stamp Phase 2 (ADR-094) entityType / collection / fields onto a template schema variable.
coolms:document:set-entity-ref [--template TEMPLATE] [--slug SLUG] [--variable VARIABLE] [--entity-type ENTITY-TYPE] [--collection] [--fields FIELDS] [--clear] [--dry-run]
| Option | Description | |
|---|---|---|
--template |
value | Template Node UUID. Mutually exclusive with --slug. |
--slug |
value | Template slug (matches the Node filename without extension). Mutually exclusive with --template. |
--variable |
value | Dotted path of the contextSchema variable to mark. |
--entity-type |
value | Fully-qualified PHP class name (e.g., 'App\Identity\Domain\Entity\User'). |
--collection |
flag | Mark the reference as a collection (multi-select picker, list of ids). |
--fields |
value | Comma-separated allow-list of exposed entity fields. Empty = resolver default. |
--clear |
flag | Remove entityType/collection/fields from the variable instead of setting them. |
--dry-run |
flag | Print the proposed change without persisting. |
coolms:document:space#
Enable or disable document handling for a site (creates the directory as well as the flag).
coolms:document:space [<action> [<site>]]
| Option | Description | |
|---|---|---|
action |
optional | list, enable or disable |
site |
optional | the site slug |
DynamicEntity#
coolms:dynamic-entity:cleanup-orphan-types#
Remove DynamicEntityType records whose slug conflicts with a PHP-registered entity alias.
coolms:dynamic-entity:cleanup-orphan-types [--execute] [--force] [--dry-run] [--include-unconfigured]
| Option | Description | |
|---|---|---|
--execute |
flag | Delete. Without it the command reports what it would delete and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | The default now; accepted so existing invocations keep working, and it wins over --execute. |
--include-unconfigured |
flag | Also remove types that have no field definitions AND no records — types that cannot render and hold nothing. |
coolms:dynamic-entity:rebuild-schemas#
Rebuild cached schemas and form configs for DynamicEntityTypes (forces inheritance re-resolution).
coolms:dynamic-entity:rebuild-schemas [--alias ALIAS]
| Option | Description | |
|---|---|---|
--alias |
value | Rebuild only the given alias and its descendants (omit to rebuild all types). |
coolms:dynamic-entity:schema:sync#
Synchronise generated DB columns for all registered dynamic entity types.
coolms:dynamic-entity:schema:sync [--entity-alias ENTITY-ALIAS]
| Option | Description | |
|---|---|---|
--entity-alias |
value | Sync only the given entity alias (omit to sync all registered aliases) |
coolms:dynamic-entity:type:register#
Register a new DynamicEntityType (taxonomy node) for a dynamic entity.
coolms:dynamic-entity:type:register [--slug SLUG] [--name NAME]
| Option | Description | |
|---|---|---|
--slug |
value | Entity alias / slug (e.g. product, customer) |
--name |
value | Human-readable name (e.g. "Product") |
Email#
coolms:email:backfill#
Backfill older mail left by the first sync, in bounded UID batches, resumably (ADR-190)
coolms:email:backfill [--mailbox MAILBOX] [--max-batches MAX-BATCHES]
| Option | Description | |
|---|---|---|
--mailbox |
value | Backfill only this mailbox (RFC-4122 UUID); default is every mailbox with older mail left |
--max-batches |
value | Batches to run this invocation |
coolms:email:encrypt-bodies#
Encrypt at rest any email bodies still stored in plaintext (M8.b backfill)
coolms:email:encrypt-bodies [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Report what would be sealed without writing anything |
coolms:email:fetch#
Fetch new mail from connected mailboxes into the message index
coolms:email:fetch [--mailbox MAILBOX] [--folder FOLDER]
| Option | Description | |
|---|---|---|
--mailbox |
value | Sync only this mailbox (RFC-4122 UUID); default is all enabled mailboxes |
--folder |
value | IMAP folder to sync |
coolms:email:idle#
Watch a mailbox in real time over IMAP IDLE, syncing on each new message (M8.a.2c daemon)
coolms:email:idle [--mailbox MAILBOX] [--folder FOLDER] [--idle-timeout IDLE-TIMEOUT]
| Option | Description | |
|---|---|---|
--mailbox |
value | Watch this mailbox (RFC-4122 UUID); required when more than one mailbox is enabled |
--folder |
value | IMAP folder to watch |
--idle-timeout |
value | Seconds each IDLE read blocks before re-checking the connection + stop signal |
coolms:email:idle-run#
The IMAP IDLE worker: watch every connected mailbox INBOX in real time, picking up changes without a restart (ADR-190)
coolms:email:idle-run [--idle-timeout IDLE-TIMEOUT] [--time-limit TIME-LIMIT]
| Option | Description | |
|---|---|---|
--idle-timeout |
value | IDLE window per mailbox per round, seconds |
--time-limit |
value | Exit cleanly after this many seconds so the supervisor recycles the process (0 = never) |
coolms:email:import#
Import a .mbox archive or a single .eml file into a mailbox
coolms:email:import [--mailbox MAILBOX] [--folder FOLDER] [--mbox] [--] <file>
| Option | Description | |
|---|---|---|
file |
required | Path to a .eml or .mbox file |
--mailbox |
value | Target mailbox id (RFC-4122 UUID) |
--folder |
value | Destination folder |
--mbox |
flag | Treat the file as an mbox archive (auto-detected for .mbox files) |
coolms:email:import-pst#
Import an Outlook .pst archive into a mailbox (requires readpst / pst-utils)
coolms:email:import-pst [--mailbox MAILBOX] [--folder FOLDER] [--] <file>
| Option | Description | |
|---|---|---|
file |
required | Path to a .pst archive |
--mailbox |
value | Target mailbox id (RFC-4122 UUID) |
--folder |
value | Import every message into this one folder instead of mirroring the PST folder names |
coolms:email:mailbox:audit-owners#
Report enabled personal mailboxes whose owner account no longer exists; --stop switches them off (ADR-192)
coolms:email:mailbox:audit-owners [--stop]
| Option | Description | |
|---|---|---|
--stop |
flag | Switch off every orphaned personal mailbox found. |
coolms:email:mailbox:health#
The number that should be zero: connected mailboxes with no import in the freshness window (ADR-190)
coolms:email:mailbox:health [--stale-minutes STALE-MINUTES]
| Option | Description | |
|---|---|---|
--stale-minutes |
value | A mailbox is unwatched after this many minutes without a completed import |
coolms:email:notify#
The mail notifier: hold IMAP IDLE on every connected mailbox; queue a fetch on new mail
coolms:email:notify [--time-limit TIME-LIMIT] [--reidle REIDLE] [--refresh REFRESH]
| Option | Description | |
|---|---|---|
--time-limit |
value | Exit cleanly after N seconds (0 = never) |
--reidle |
value | Re-enter IDLE after N seconds |
--refresh |
value | Re-read the connected mailboxes every N seconds |
coolms:email:oauth:doctor#
Report mailbox OAuth configuration — real credentials, shipped placeholders, and the callback URI (ADR-190)
coolms:email:oauth:doctor [--host HOST] [--scheme SCHEME]
| Option | Description | |
|---|---|---|
--host |
value | Generate the callback URI for this host (e.g. coolms2.local:8080) instead of from DEFAULT_URI |
--scheme |
value | Scheme to pair with --host |
coolms:email:redecode-headers#
Re-decode RFC 2047 encoded-word subjects and display names stored raw by the pre-fix fetch path (ADR-190)
coolms:email:redecode-headers [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Report what would change without writing |
coolms:email:reextract-snippets#
Rebuild snippets that still carry a mail's CSS, from the stored .eml (ADR-190 finding 3)
coolms:email:reextract-snippets [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Report what would change without writing |
coolms:email:search:reindex#
Rebuild the email search index from all stored messages (M8.d)
coolms:email:search:reindex [--reset]
| Option | Description | |
|---|---|---|
--reset |
flag | Drop all existing documents before reindexing |
coolms:email:sweep-report#
Per mailbox: did the 2-minute sweep ever find mail first while its IDLE was live? (read-only)
coolms:email:sweep-report [--hours HOURS]
| Option | Description | |
|---|---|---|
--hours |
value | The window, in UTC hours back from now |
Form#
coolms:form:create#
Interactively create a new form configuration.
coolms:form:create [--format FORMAT] [--data-class DATA-CLASS] [--dir DIR] [--] [<form_id>]
| Option | Description | |
|---|---|---|
form_id |
optional | Form ID in snake_case (e.g. user_profile). If omitted, an interactive prompt is shown. |
--format |
value | Storage format: yaml | php | db. If omitted, an interactive choice is shown. |
--data-class |
value | Data class FQCN (optional). Pass empty string to skip. |
--dir |
value | Output directory override. If omitted, ConfigManager default is used. |
coolms:form:edit#
Interactively edit an existing form configuration.
coolms:form:edit [-f|--format [FORMAT]] [--] <form-id>
| Option | Description | |
|---|---|---|
form-id |
required | ID of the form config to edit |
--format / -f |
value | Storage format to write (yaml/php/db) |
Identity#
coolms:admin:credential#
Set an administrator's own elevation credential — their password and their second factor, replacing any factor already registered.
coolms:admin:credential [--password-file PASSWORD-FILE] [--code CODE] [--secret SECRET] [--keep-factor] [--] <account>
| Option | Description | |
|---|---|---|
account |
required | The administrator, by a sign-in identifier: email, username or phone |
--password-file |
value | Read the new password from this file (first line) instead of prompting; never pass it on the command line |
--code |
value | The six-digit code that confirms the factor, instead of prompting |
--secret |
value | Enrol this base32 TOTP secret instead of generating one (provisioning; the code must come from it) |
--keep-factor |
flag | Set the password only; leave the factor as it is, none included |
coolms:fixtures:media-users#
Create fixture users for Media Library security E2E tests (dev/test only)
coolms:fixtures:media-users
coolms:fixtures:test-account#
Create one test account on a reserved domain, the password read from stdin (dev/test only)
coolms:fixtures:test-account [--unconfirmed] [--credential-file CREDENTIAL-FILE] [--group GROUP] [--member-of MEMBER-OF] [--deactivate] [--run-id RUN-ID] [--reactivate] [--] <email>
| Option | Description | |
|---|---|---|
email |
required | The address, on a reserved domain such as example.test |
--unconfirmed |
flag | Leave the address unconfirmed |
--credential-file |
value | Generate the password instead of reading stdin, and write it to this NEW file (mode 0600) with the address and the account id. The password is printed nowhere; a client reads the file by path. |
--group |
value | The primary group of a new account |
--member-of |
value | Also make the new account a member of this group (repeatable), never its primary group. NOTE: --member-of admin makes an EFFECTIVE administrator, not a plain member |
--deactivate |
flag | Take an account this command made out of use, when the check that used it ends; --run-id names the run. Its sessions and device tokens end. No operator is named. |
--run-id |
value | With --deactivate: the caller's run id, recorded as the reason |
--reactivate |
flag | Put an INACTIVE account this command made back in use, with a new generated password written to --credential-file (required). For a check that deactivates it again when it ends. |
coolms:group:create#
Create a new group
coolms:group:create [-d|--description [DESCRIPTION]] [-s|--system] [--] <name>
| Option | Description | |
|---|---|---|
name |
required | Group name |
--description / -d |
value | Group description |
--system / -s |
flag | Mark as system group |
coolms:identity:add-to-groups#
Make an account a member of the named groups (dry run unless --execute)
coolms:identity:add-to-groups [--execute] [--force] [--] <identifier> <groups>...
| Option | Description | |
|---|---|---|
identifier |
required | The account: its email address or username |
groups |
required | The groups, by name |
--execute |
flag | Add them; otherwise only list and count |
--force |
flag | Do not ask; needed for --execute unattended |
coolms:identity:attach-identifier#
Give an account an addressable identifier and send it a confirmation (or, as a fallback, assert one)
coolms:identity:attach-identifier [--reason REASON] [--assert-confirmed] [--by BY] [--primary] [--dry-run] [--] <account> <identifier>
| Option | Description | |
|---|---|---|
account |
required | The account, named by any identifier it holds (a username is the usual case) or by its uuid |
identifier |
required | The addressable identifier to attach — an email address today, a phone number when a way to confirm one exists |
--reason |
value | Why an operator is putting this address on this account. Recorded; the command refuses without it. |
--assert-confirmed |
flag | Confirm it on the operator's word instead of sending a confirmation. The fallback for when no channel can carry one; refused while a channel answers. |
--by |
value | The operator's own account, named the same way as the target. Required with --assert-confirmed: it is who the confirmation is attributed to. |
--primary |
flag | Also make it the primary identifier. Off by default: promotion changes what five other surfaces display as the person. Requires --assert-confirmed, because the aggregate will not promote an unconfirmed row. |
--dry-run |
flag | Report what would happen and change nothing |
coolms:identity:deactivate-account#
Take a person's account out of use, recording who did it and why (never a service account)
coolms:identity:deactivate-account [--reason REASON] [--by BY] [--dry-run] [--] <account>
| Option | Description | |
|---|---|---|
account |
required | The account, named by any identifier it holds or by its uuid |
--reason |
value | Why the account is being taken out of use. Recorded on the account; refused without it. |
--by |
value | The operator's own account, named the same way. Recorded as who did it; refused without it. |
--dry-run |
flag | Report what would happen and change nothing |
coolms:identity:fetch-breached-list#
Download the breached-password corpus the password policy checks against (offline afterwards).
coolms:identity:fetch-breached-list [--source SOURCE] [--limit LIMIT]
| Option | Description | |
|---|---|---|
--source |
value | Where to read the plaintext list from |
--limit |
value | Keep at most this many entries |
coolms:identity:footprints#
Print what each module declares it does with a person's data on account deletion
coolms:identity:footprints
coolms:identity:hash-access-tokens#
Replace each access token still stored raw with its SHA-256, in place. Dry run by default.
coolms:identity:hash-access-tokens [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--dry-run |
flag | The default; accepted, and it wins over --execute. |
--execute |
flag | Hash them. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:identity:prune-expired-credentials#
Delete expired access tokens, refresh tokens, and verification codes past their grace window.
coolms:identity:prune-expired-credentials [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:identity:prune-identifierless-users#
Report the non-system users without a primary identifier (a number that should be zero) and, with --apply, remove them through the deletion flow
coolms:identity:prune-identifierless-users [--apply] [--force] [--as AS]
| Option | Description | |
|---|---|---|
--apply |
flag | Delete the rows through the account deletion flow with a grace period of zero; without it, report only |
--force |
flag | Do not ask. Required with --apply under --no-interaction. |
--as |
value | The identifier of the administrator on whose record the deletions are requested; needed with --apply unless a person is signed in |
coolms:identity:remove-from-groups#
Take an account out of the named groups (dry run unless --execute)
coolms:identity:remove-from-groups [--primary PRIMARY] [--execute] [--force] [--] <identifier> <groups>...
| Option | Description | |
|---|---|---|
identifier |
required | The account: its email address or username |
groups |
required | The groups, by name |
--primary |
value | The new primary group, when a named group is it |
--execute |
flag | Remove them; otherwise only list and count |
--force |
flag | Do not ask; needed for --execute unattended |
coolms:identity:remove-probe-accounts#
Delete the probe accounts a census file lists — only those whose every identifier is on a reserved domain.
coolms:identity:remove-probe-accounts [--list LIST] [--execute] [--force] [--dry-run] [--administrators]
| Option | Description | |
|---|---|---|
--list |
value | The census: a file of account ids, one per line. |
--execute |
flag | Delete them. Without it the command prints the census and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | Report only (the default); wins over --execute. |
--administrators |
flag | Also remove listed administrators that are INACTIVE; an active one is refused either way. |
coolms:identity:restore-administrator#
BREAK-GLASS: make an existing account an effective administrator again (dry run unless --execute)
coolms:identity:restore-administrator [--execute] [--force] [--] <account>
| Option | Description | |
|---|---|---|
account |
required | One of its identifiers (an email address), or its id |
--execute |
flag | Restore it; otherwise only say what would change |
--force |
flag | Do not ask; needed for --execute unattended |
coolms:identity:retire-admin-edges#
Remove every grant edge from the admin group (dry run unless --execute)
coolms:identity:retire-admin-edges [--execute] [--force] [--first FIRST]
| Option | Description | |
|---|---|---|
--execute |
flag | Remove them; otherwise only list and count |
--force |
flag | Do not ask; needed for --execute unattended |
--first |
value | List the account with this identifier first |
coolms:identity:retire-host-groups#
Remove every membership of the retired host groups, console and desk (dry run unless --execute)
coolms:identity:retire-host-groups [--execute] [--force]
| Option | Description | |
|---|---|---|
--execute |
flag | Remove them; otherwise only list and count |
--force |
flag | Do not ask; needed for --execute unattended |
coolms:identity:user:list#
List people and their roles.
coolms:identity:user:list [--role ROLE] [--limit LIMIT]
| Option | Description | |
|---|---|---|
--role |
value | Only people holding this role. |
--limit |
value | How many to read. |
coolms:user:create#
Create a new user
coolms:user:create [-p|--password [PASSWORD]] [-f|--firstname [FIRSTNAME]] [-l|--lastname [LASTNAME]] [-g|--group [GROUP]] [-G|--groups [GROUPS]] [--admin] [--inactive] [--reason REASON] [--] <identifier>
| Option | Description | |
|---|---|---|
identifier |
required | Identifier (email address, phone number, or username) |
--password / -p |
value | Password (will prompt if not provided) |
--firstname / -f |
value | First name |
--lastname / -l |
value | Last name |
--group / -g |
value | Primary group name |
--groups / -G |
value | Additional groups |
--admin |
flag | Create the system admin user (cannot log in; owns the VFS) |
--inactive |
flag | Create user as inactive |
--reason |
value | Why the account is created inactive. Required with --inactive; recorded on the account. |
Lead#
coolms:lead:backfill-contacts#
Link every existing lead to a Contact (de-dup by email), stamping contact_id (idempotent).
coolms:lead:backfill-contacts [--dry-run] [--batch BATCH]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Report how many leads WOULD be linked, without writing. |
--batch |
value | Rows fetched + processed per iteration. |
Media#
coolms:media:fix-collection-modes#
Grant group-write (0o775) to existing /media collections that predate the group-writable model.
coolms:media:fix-collection-modes [--execute]
| Option | Description | |
|---|---|---|
--execute |
flag | Persist the chmod (otherwise dry-run only). |
coolms:media:gc#
Clean up orphan VFS Nodes left by failed Media uploads (no extras.mediaAsset marker).
coolms:media:gc [--execute] [--force] [--limit LIMIT] [--verbose-paths]
| Option | Description | |
|---|---|---|
--execute |
flag | Actually delete orphans. Without this flag the command is a dry-run. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--limit |
value | Max orphans processed per run. |
--verbose-paths |
flag | List every orphan path. Off by default to keep large fleets tractable. |
coolms:media:merge-alt-into-title#
Merge media alt/caption into the Node title/description columns (+ i18n overrides), then drop the alt/caption keys.
coolms:media:merge-alt-into-title [--execute]
| Option | Description | |
|---|---|---|
--execute |
flag | Persist the merge (otherwise dry-run only). |
coolms:media:migrate-translations#
Reshape media extras.translations into canonical extras.{field} + extras.i18n overrides.
coolms:media:migrate-translations [--execute]
| Option | Description | |
|---|---|---|
--execute |
flag | Persist the reshape. Without this flag the command is a dry-run. |
Messaging#
coolms:outbox:prune#
Prune delivered outbound rows and old journal rows past their retention windows.
coolms:outbox:prune [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:outbox:relay#
Publish committed transactional-outbox rows to their consumers.
coolms:outbox:relay [--batch BATCH] [--status]
| Option | Description | |
|---|---|---|
--batch |
value | Maximum number of messages to publish in this run. |
--status |
flag | Publish nothing; print the undelivered backlog and exit 1 when any row has waited longer than a minute (the number that should be zero while a relay runs). |
Navi#
coolms:navi:entry:drop#
Remove named entries from a section's public navigation tree (dry-run unless --force).
coolms:navi:entry:drop [--force] [--] <section> <paths>...
| Option | Description | |
|---|---|---|
section |
required | Site-section slug, e.g. coolms-site |
paths |
required | Entry paths to remove, e.g. /web /substrate |
--force |
flag | Actually remove them. Without this the command only reports. |
coolms:navi:export#
Export a NaviGraph tree to a YAML config file.
coolms:navi:export [-o|--output OUTPUT] [--stdout] [--] <tree>
| Option | Description | |
|---|---|---|
tree |
required | Tree slug (e.g. navi.admin, navi.toolbar.vfs) |
--output / -o |
value | Output file path (relative to project root). Defaults to var/navi-export/{slug}.yaml |
--stdout |
flag | Print YAML to stdout instead of writing file |
coolms:navi:list#
List NaviTrees and their node structure.
coolms:navi:list [--host [HOST]] [--] [<slug>]
| Option | Description | |
|---|---|---|
slug |
optional | Only this tree. |
--host |
value | Filter by host (exact match or global) |
coolms:navi:node:create#
Create a new NaviNode within a NaviTree.
coolms:navi:node:create [--slug [SLUG]] [--section [SECTION]] [--parent [PARENT]] [--template [TEMPLATE]] [--] <tree-slug> <path> <title>
| Option | Description | |
|---|---|---|
tree-slug |
required | Slug of the parent NaviTree |
path |
required | URL path (e.g. /, /blog, /admin/users) |
title |
required | Display title (menu label, ) |
--slug |
value | Node slug (auto-derived from path if omitted) |
--section |
value | SiteSection slug to handle this path |
--parent |
value | Parent NaviNode UUID |
--template |
value | Template override (e.g. pages/landing.html.dtmpl) |
coolms:navi:node:drop#
Remove one navigation node by path.
coolms:navi:node:drop <path> [<tree>]
| Option | Description | |
|---|---|---|
path |
required | The node path, e.g. /content/pages. |
tree |
optional | The tree slug. |
coolms:navi:prune#
Delete navigation nodes the seeder wrote that no module declares any more. A dry run unless --execute.
coolms:navi:prune [--execute] [--force] [--] [<module>]
| Option | Description | |
|---|---|---|
module |
optional | Only the trees this module touches (other modules' nodes are kept) |
--execute |
flag | Delete. Without it the command reports what it would delete and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:navi:seed#
Seed NaviGraph nodes contributed by all modules (additive; the prune is coolms:navi:prune).
coolms:navi:seed [--module MODULE] [--prune] [-f|--force] [--dry-run] [--] [<module>]
| Option | Description | |
|---|---|---|
module |
optional | Seed only this module (e.g. "navi", "media"); omit to seed all |
--module |
value | Same as the argument. |
--prune |
flag | Moved to coolms:navi:prune; here it only refuses. |
--force / -f |
flag | Re-seed even unchanged nodes (manual edits still preserved) |
--dry-run |
flag | Compute result without persisting anything |
coolms:navi:tree:create#
Create a new NaviTree (navigation tree for a host or global).
coolms:navi:tree:create [--host [HOST]] [--] <slug> <label>
| Option | Description | |
|---|---|---|
slug |
required | Unique slug (e.g. navi.example.com, navi.admin) |
label |
required | Human-readable label (e.g. "Main Navigation") |
--host |
value | Bind to a specific host (e.g. example.com) |
coolms:navi:unseed#
Remove all NaviGraph nodes seeded by a specific module.
coolms:navi:unseed [-m|--module MODULE] [--execute] [--force] [--dry-run] [--] [<module>]
| Option | Description | |
|---|---|---|
module |
optional | Module name whose nodes will be removed |
--module / -m |
value | Module name (deprecated: use positional argument instead) |
--execute |
flag | Delete. Without it the command counts and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
Realtime#
coolms:realtime:presence#
Who is present on realtime channels, read-only; --watch prints each change, stamped.
coolms:realtime:presence [--watch WATCH] [--every EVERY] [--] <channels>...
| Option | Description | |
|---|---|---|
channels |
required | The channels, e.g. rtc.user. |
--watch |
value | Keep asking for this many seconds |
--every |
value | Milliseconds between asks with --watch |
Rtc#
coolms:rtc:end-abandoned-calls#
End connected calls nobody has been live on for the abandon window (dry run unless --execute)
coolms:rtc:end-abandoned-calls [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--dry-run |
flag | The default; accepted, and it wins over --execute. |
--execute |
flag | End the calls listed. Without it, nothing is changed. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:rtc:turn-uris#
The TURN URIs each public authority is handed out, as a call's ICE servers give them.
coolms:rtc:turn-uris [--authority AUTHORITY]
| Option | Description | |
|---|---|---|
--authority |
value | Only this configured entry, one URI per line. |
Scheduler#
coolms:public-versioning:check#
Each public repository of a GitHub organization: is its versioning rule the canonical one
coolms:public-versioning:check [--ref REF] [--] <organization>
| Option | Description | |
|---|---|---|
organization |
required | The GitHub organization |
--ref |
value | repository=branch: read that branch instead of the default one |
coolms:scheduler:run#
Dispatch every due schedule (enabled + nextRunAt <= now). Invoke from OS cron at a 1-minute tick.
coolms:scheduler:run [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | List due schedules without dispatching their messages. |
coolms:scheduler:worker-starts#
Each worker's last start (generation, commit) and the served commit, as JSON
coolms:scheduler:worker-starts
messenger:stop-workers#
Stop workers after their current message
messenger:stop-workers
Search#
coolms:search:prune-query-log#
Delete logged searches older than the configured retention window.
coolms:search:prune-query-log [--dry-run] [--execute] [--force]
| Option | Description | |
|---|---|---|
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:search:reindex#
Rebuild the content search index from all published content.
coolms:search:reindex
Seo#
coolms:seo:redirect:add#
Create or update a redirect rule (source path → target, per site section).
coolms:seo:redirect:add [--section SECTION] [--status STATUS] [--] <source> <target>
| Option | Description | |
|---|---|---|
source |
required | Incoming request path to match (e.g. "/old-page"). |
target |
required | Destination path or absolute URL (e.g. "/new-page"). |
--section |
value | Site-section slug the rule applies to. |
--status |
value | HTTP redirect status (301, 302, 307, 308). |
Settings#
coolms:secret:list#
List the names of secrets in the encrypted secrets file (values never shown).
coolms:secret:list
coolms:secret:remove#
Remove a secret from the encrypted secrets file.
coolms:secret:remove <key>
| Option | Description | |
|---|---|---|
key |
required | Logical secret key to remove |
coolms:secret:set#
Set a secret in the encrypted secrets file.
coolms:secret:set <key> [<value>]
| Option | Description | |
|---|---|---|
key |
required | Logical secret key, e.g. stripe_api_key |
value |
optional | Secret value (omit for a hidden prompt) |
Spreadsheet#
coolms:spreadsheet:import#
Convert an uploaded .xlsx template into an editable native .dsheet
coolms:spreadsheet:import [--apply] [--force] [--] <path>
| Option | Description | |
|---|---|---|
path |
required | VFS path of the .xlsx to convert |
--apply |
flag | Actually write the .dsheet beside it |
--force |
flag | Overwrite an existing .dsheet at the target path |
Sync#
coolms:sync:edge:list#
List the edge nodes registered in the controller sync fleet.
coolms:sync:edge:list
coolms:sync:edge:provision#
Mint (or rotate) the machine identity + bearer tokens for a registered sync edge.
coolms:sync:edge:provision [--slug SLUG] [--rotate] [--credential-file CREDENTIAL-FILE]
| Option | Description | |
|---|---|---|
--slug |
value | The registered edge to provision (see coolms:sync:edge:list). |
--rotate |
flag | Revoke ALL existing tokens for the edge user before issuing the new pair (leaked-credential response). |
--credential-file |
value | Where the pair is written, 0600 (default var/sync-edges/.credentials.json). The tokens are never printed. |
coolms:sync:edge:register#
Register / re-configure an edge node in the controller sync fleet (upsert by slug).
coolms:sync:edge:register [--slug SLUG] [--name NAME] [--url URL] [--credential-ref CREDENTIAL-REF] [--principal PRINCIPAL] [--scope-tiers SCOPE-TIERS] [--scope-sections SCOPE-SECTIONS] [--disabled]
| Option | Description | |
|---|---|---|
--slug |
value | Stable edge handle (lowercase slug). |
--name |
value | Human display label. |
--url |
value | The edge's own sync-ingest base URL (http/https). |
--credential-ref |
value | Secret-store reference for the per-edge push bearer (NOT the raw token). Optional for a pull-only edge. |
--principal |
value | The Identity user (UUID or email) this edge authenticates AS when it calls in. Required for the edge to be able to ack; omit to leave it unbound. |
--scope-tiers |
value | Selective-sync scope: comma-separated backup tiers this edge may receive (e.g. "config" or "config,content"). Omit for the whole synced set. Only enforced for a --principal-bound edge. |
--scope-sections |
value | Selective-sync sections axis (B.3.4): comma-separated site-section slugs; the edge receives only those /content/ subtrees (shared trees always flow). Composes with --scope-tiers. |
--disabled |
flag | Register the edge disabled (receives no pushes). |
coolms:sync:edge:remove#
Remove an edge node from the controller sync fleet (drops its cursor too).
coolms:sync:edge:remove [--slug SLUG] [--force]
| Option | Description | |
|---|---|---|
--slug |
value | Slug of the edge to remove. |
--force |
flag | Skip the confirmation prompt (for automation). |
coolms:sync:nudge-edges#
Nudge every enabled edge to pull now (controller side). Safe + idempotent.
coolms:sync:nudge-edges
coolms:sync:pull#
Pull + restore the controller's current snapshot (edge side). WRITES to the DB — use --dry-run first.
coolms:sync:pull [--controller CONTROLLER] [--token TOKEN] [--tier TIER] [--only ONLY] [--reconcile-deletes] [--dry-run] [--force]
| Option | Description | |
|---|---|---|
--controller |
value | Base URL of the controller (e.g. https://controller.internal). |
--token |
value | Bearer token of the edge/sync principal on the controller. |
--tier |
value | Tiers to pull (comma list): config,content,runtime,all. |
--only |
value | Restrict the restore to these backup keys (comma list). |
--reconcile-deletes |
flag | ALSO delete local rows absent from the snapshot (propagate controller-side deletes). DESTRUCTIVE; only capable contributors participate. |
--dry-run |
flag | Fetch + unpack + print the plan without writing anything. |
--force |
flag | Skip the confirmation prompt (for automation). |
coolms:sync:pull-changes#
Pull + apply the controller's change feed (edge side, catch-up). WRITES to the DB — use --dry-run first.
coolms:sync:pull-changes [--controller CONTROLLER] [--token TOKEN] [--ack-as ACK-AS] [--limit LIMIT] [--overlap OVERLAP] [--max-batches MAX-BATCHES] [--dry-run] [--force]
| Option | Description | |
|---|---|---|
--controller |
value | Base URL of the controller. Defaults to the configured upstream (COOLMS_SYNC_CONTROLLER_URL). |
--token |
value | Bearer token of the edge/sync principal. Required with --controller; otherwise resolved from the secret store. |
--ack-as |
value | Report the applied cursor to the controller as this edge slug (best-effort). Defaults to the configured COOLMS_SYNC_EDGE_SLUG. |
--limit |
value | Change-feed page size. |
--overlap |
value | Commit-ordering safe-watermark: re-read this many seqs below the cursor. |
--max-batches |
value | Safety cap on the number of pages applied in one run. |
--dry-run |
flag | Page + print the plan without applying or advancing the cursor. |
--force |
flag | Skip the confirmation prompt (for automation). |
Terminal#
coolms:terminal:events-tail#
Show recent domain events from the event log.
coolms:terminal:events-tail [--filter FILTER] [--limit LIMIT]
| Option | Description | |
|---|---|---|
--filter |
value | Only events whose name starts with this. |
--limit |
value | How many to show. |
coolms:terminal:exposures#
List the console commands exposed to the terminal.
coolms:terminal:exposures [--background]
| Option | Description | |
|---|---|---|
--background |
flag | Only the ones that run in a worker. |
coolms:terminal:rql-explain#
Show the SQL an RQL query generates.
coolms:terminal:rql-explain [--entity ENTITY] [--] [<query>]
| Option | Description | |
|---|---|---|
query |
optional | The RQL query, e.g. "filter=title cn news". |
--entity |
value | Which entity to explain against. |
Theme#
coolms:theme:activate#
Activate an installed theme (optionally for a specific section)
coolms:theme:activate [-s|--section SECTION] [--] <slug>
| Option | Description | |
|---|---|---|
slug |
required | Theme slug to activate |
--section / -s |
value | SiteSection slug to bind this theme to (optional) |
coolms:theme:install#
Install a theme from a registered provider
coolms:theme:install [--with-demo] [-f|--force] [--] <slug>
| Option | Description | |
|---|---|---|
slug |
required | Theme slug (e.g. coolms-default) |
--with-demo |
flag | Seed demo content after installation |
--force / -f |
flag | Reinstall even if already installed — updates resolved chain |
coolms:theme:list#
List all installed themes
coolms:theme:list
coolms:theme:publish#
Publish a theme by copying its templates to the VFS
coolms:theme:publish [--overwrite] [--assets] [--] <slug>
| Option | Description | |
|---|---|---|
slug |
required | Theme slug to publish |
--overwrite |
flag | Replace VFS templates that already exist. Without it they are kept, because a published template may have been edited in the admin. |
--assets |
flag | Also refresh public/themes// from the package. Stylesheets and images are served from there, not from the package. |
coolms:theme:reset#
Remove a theme's published VFS templates (revert to filesystem-served state)
coolms:theme:reset [--assets] [--] <slug>
| Option | Description | |
|---|---|---|
slug |
required | Theme slug to reset |
--assets |
flag | Also remove public/themes//. Nothing serves those files from the filesystem, so the site will 404 on its stylesheet until they are republished. |
coolms:theme:seed#
Seed a theme's starting content into a section (idempotent; refuses edited pages).
coolms:theme:seed [-s|--section SECTION] [-t|--theme THEME] [--force]
| Option | Description | |
|---|---|---|
--section / -s |
value | SiteSection slug to seed into |
--theme / -t |
value | Theme slug whose manifest to seed from |
--force |
flag | Overwrite pages that have been edited since they were seeded |
coolms:theme:uninstall#
Uninstall (remove) a theme from the repository
coolms:theme:uninstall [-f|--force] [--] <slug>
| Option | Description | |
|---|---|---|
slug |
required | Theme slug to uninstall |
--force / -f |
flag | Deactivate and uninstall even if the theme is currently active |
VFS#
coolms:elevation:shadow-report#
What the log-only elevation gates saw, and whether it confirms the ADR-184 baseline.
coolms:elevation:shadow-report [--since SINCE] [--recount]
| Option | Description | |
|---|---|---|
--since |
value | Count from this day (YYYY-MM-DD); default: everything recorded |
--recount |
flag | Re-take the static count on the live tree (loads every node; console-time only) |
coolms:vfs:api-resources#
Bring the API resource nodes back to the routes and the explicit definitions (ADR-011) — dry run unless --execute.
coolms:vfs:api-resources [--execute] [--restore-explicit] [--force] [--add-only] [--converge]
| Option | Description | |
|---|---|---|
--execute |
flag | Create the missing nodes. Without it the command reports and changes nothing. |
--restore-explicit |
flag | With --execute, also re-apply every explicit definition's owner, group and mode to its node. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--add-only |
flag | Create the missing nodes and change nothing that exists. Needs no --force: it only adds. |
--converge |
flag | Create the missing nodes and bring every declared or defined node to its declaration (owner, group, mode), only where it differs. A dry run unless --execute. |
coolms:vfs:api-resources:modules#
The route-to-module map (ADR-200): per module, its /api/v1 routes, its roots, its rootless routes.
coolms:vfs:api-resources:modules [--routes]
| Option | Description | |
|---|---|---|
--routes |
flag | Also list every route with its module and root. |
coolms:vfs:assign-template#
Assign a theme template to a VFS path and enable SSR rendering.
coolms:vfs:assign-template [-r|--recursive] [--] <path> <template>
| Option | Description | |
|---|---|---|
path |
required | VFS path to the file or directory (e.g. /pages). |
template |
required | Theme-relative template path (e.g. pages/page.html.dtmpl). |
--recursive / -r |
flag | Apply to all file descendants of the given directory. |
coolms:vfs:backfill-systemic-titles#
Stamp Node.title on module-root and SiteSection-backed VFS dirs.
coolms:vfs:backfill-systemic-titles [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Report what would be updated without writing. |
coolms:vfs:cat#
Print a VFS file.
coolms:vfs:cat [--cwd CWD] [--home HOME] [--as AS] [--field FIELD] [--] <path>
| Option | Description | |
|---|---|---|
path |
required | The file to print. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
--field |
value | body (default) or extras. |
coolms:vfs:chmod#
Change a VFS node mode.
coolms:vfs:chmod [--cwd CWD] [--home HOME] [--as AS] [--] <mode> <path>
| Option | Description | |
|---|---|---|
mode |
required | Octal (0644) or symbolic (u+rw). |
path |
required | The node to change. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
coolms:vfs:chown#
Change a VFS node owner.
coolms:vfs:chown [--cwd CWD] [--home HOME] [--as AS] [--] <owner> <path>
| Option | Description | |
|---|---|---|
owner |
required | A person, optionally person:group. |
path |
required | The node to change. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
coolms:vfs:cleanup-tmp#
Remove files in /tmp and ~/tmp older than the configured TTL.
coolms:vfs:cleanup-tmp [--ttl TTL] [--execute] [--force] [--dry-run]
| Option | Description | |
|---|---|---|
--ttl |
value | Files older than this many seconds are deleted. Falls back to the COOLMS_TMP_TTL_SECONDS env var, then to 3600. |
--execute |
flag | Delete. Without it the command lists what it would delete and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
coolms:vfs:closed-spaces#
Close what already exists in each declared closed space to everyone outside its group
coolms:vfs:closed-spaces [--execute] [--force] [--dry-run]
| Option | Description | |
|---|---|---|
--execute |
flag | Change the nodes. Without it the command prints what it would change and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | Report only (the default); wins over --execute. |
coolms:vfs:cp#
Copy a VFS file or directory.
coolms:vfs:cp [--cwd CWD] [--home HOME] [--as AS] [-r|--recursive] [--] <source> <target>
| Option | Description | |
|---|---|---|
source |
required | What to copy. |
target |
required | Where to copy it. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
--recursive / -r |
flag | Copy a directory and everything under it. |
coolms:vfs:ensure-home-dirs#
Set up the missing home of every account that should have one, as account creation does.
coolms:vfs:ensure-home-dirs [--dry-run] [--user USER]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Report what would be set up without making any changes. |
--user |
value | Only this account, by its id. |
coolms:vfs:find#
Search VFS nodes by name or type.
coolms:vfs:find [--cwd CWD] [--home HOME] [--as AS] [--name NAME] [--type TYPE] [--] [<path>]
| Option | Description | |
|---|---|---|
path |
optional | Where to search. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
--name |
value | Match this name. |
--type |
value | file or dir. |
coolms:vfs:gc#
Run garbage collection on VFS storage
coolms:vfs:gc [--execute] [--force] [--dry-run]
| Option | Description | |
|---|---|---|
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | The default now; accepted, and it wins over --execute. |
coolms:vfs:gc-orphan-home-dirs#
Remove /home/{uuid} directories whose account is gone — empty-only; a folder with files is named, never removed.
coolms:vfs:gc-orphan-home-dirs [--execute] [--force] [--limit LIMIT]
| Option | Description | |
|---|---|---|
--execute |
flag | Remove the empty ones. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--limit |
value | Remove at most this many homes in one run. |
coolms:vfs:init#
Initialize the Virtual File System (create root node)
coolms:vfs:init
coolms:vfs:ln#
Create a VFS symbolic link.
coolms:vfs:ln [--cwd CWD] [--home HOME] [--as AS] [--] <target> <link>
| Option | Description | |
|---|---|---|
target |
required | What the link points at. |
link |
required | Where the link goes. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
coolms:vfs:ls#
List a VFS directory.
coolms:vfs:ls [--cwd CWD] [--home HOME] [--as AS] [-l|--long] [-a|--all] [--] [<path>]
| Option | Description | |
|---|---|---|
path |
optional | The directory to list. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
--long / -l |
flag | Mode, owner, group, size and name. |
--all / -a |
flag | Include hidden entries. |
coolms:vfs:make-personal-files-private#
Make the files in people's own homes (outside public/ and pages/) that others can read owner-only (0600)
coolms:vfs:make-personal-files-private [--execute] [--force] [--dry-run] [--owner OWNER]
| Option | Description | |
|---|---|---|
--execute |
flag | Change the modes. Without it the command prints the census and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | Report only (the default); wins over --execute. |
--owner |
value | One account's files only (its id). |
coolms:vfs:mkdir#
Create a VFS directory.
coolms:vfs:mkdir [--cwd CWD] [--home HOME] [--as AS] [-p|--parents] [--] <path>
| Option | Description | |
|---|---|---|
path |
required | The directory to create. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
--parents / -p |
flag | Create the missing parents too. |
coolms:vfs:mv#
Move or rename a VFS node.
coolms:vfs:mv [--cwd CWD] [--home HOME] [--as AS] [--] <source> <target>
| Option | Description | |
|---|---|---|
source |
required | What to move. |
target |
required | Where to move it. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
coolms:vfs:prune-orphan-site-dirs#
Report (default) or delete /content/{slug} dirs whose SiteSection row is gone; --execute to delete
coolms:vfs:prune-orphan-site-dirs [--execute] [--force] [--empty-only]
| Option | Description | |
|---|---|---|
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--empty-only |
flag | With --execute: delete only directories with no content (rmdir semantics); refuse the rest |
coolms:vfs:realign-home-group#
Move nodes under homes' group-owned subdirectories from --from to the group the layout names (dry run unless --execute)
coolms:vfs:realign-home-group [--from FROM] [--execute] [--force]
| Option | Description | |
|---|---|---|
--from |
value | The group the nodes carry today, e.g. document |
--execute |
flag | Move them; otherwise only count and list |
--force |
flag | Do not ask; needed for --execute unattended |
coolms:vfs:rebuild-paths#
Rebuild the materialized_path column for all VFS nodes
coolms:vfs:rebuild-paths
coolms:vfs:reconcile-home-directories#
Report (default) or create missing policy subdirectories under /home/{uuid}; --apply to write
coolms:vfs:reconcile-home-directories [--apply] [--user USER]
| Option | Description | |
|---|---|---|
--apply |
flag | Actually create the missing subdirectories (default is report-only) |
--user |
value | Reconcile a single home directory by user UUID |
coolms:vfs:remove-listed#
Remove exactly the VFS nodes a census file lists; a directory only when everything in it is listed too.
coolms:vfs:remove-listed [--list LIST] [--execute] [--force] [--dry-run]
| Option | Description | |
|---|---|---|
--list |
value | The census: a file of VFS paths, one per line. |
--execute |
flag | Remove them. Without it the command prints the census and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
--dry-run |
flag | Report only (the default); wins over --execute. |
coolms:vfs:rm#
Remove a VFS node.
coolms:vfs:rm [--cwd CWD] [--home HOME] [--as AS] [-r|--recursive] [--] <path>
| Option | Description | |
|---|---|---|
path |
required | What to remove. |
--cwd |
value | The directory paths are relative to. |
--home |
value | The directory ~ expands to. |
--as |
value | Act as this person (outside the terminal). |
--recursive / -r |
flag | Remove a directory and everything under it. |
coolms:vfs:stats#
Show VFS statistics
coolms:vfs:stats
Web#
coolms:csp:classify#
Classify one reported CSP violation after reproducing it: fix, allow, external or unconfirmed
coolms:csp:classify [--reproduced REPRODUCED] [--] <id> <class> <note>
| Option | Description | |
|---|---|---|
id |
required | The row id, or a unique prefix of at least 8 characters (coolms:csp:violations) |
class |
required | One of: fix, allow, external, unconfirmed |
note |
required | Why |
--reproduced |
value | Where and how it was reproduced in the real admin (fix, allow, external) |
coolms:csp:violations#
List the CSP violations browsers reported, and how many are classified
coolms:csp:violations [--unclassified]
| Option | Description | |
|---|---|---|
--unclassified |
flag | Only the rows not yet classified |
coolms:dev:seed-multilingual#
Seed a two-locale page and a second site section so locale/section variance is reproducible in dev.
coolms:dev:seed-multilingual
coolms:fixtures:baseline#
Seed the minimum data a kernel-booted test needs onto a migrated schema (system users, sections, a theme, an admin, published pages). Idempotent.
coolms:fixtures:baseline [--skip-content]
| Option | Description | |
|---|---|---|
--skip-content |
flag | Stop after identity, VFS and navigation — no demo pages |
coolms:setup:default#
Create the default NaviTree and navigation nodes from all registered providers. Idempotent. Reports nodes whose template is NULL; repairs them only with --repair-templates.
coolms:setup:default [--tree TREE] [--repair-templates]
| Option | Description | |
|---|---|---|
--tree |
value | Slug of the NaviTree to create or reuse |
--repair-templates |
flag | Also fill a NULL template on a node that already exists, from the provider that declares it |
coolms:site:install#
Install the CoolMS product website (bind theme to a section + seed the public menu).
coolms:site:install [-s|--section SECTION]
| Option | Description | |
|---|---|---|
--section / -s |
value | SiteSection slug to bind + populate |
coolms:sites:apply#
Generate nginx vhost configs from SiteSection rows. Idempotent. Reload nginx separately to apply.
coolms:sites:apply [--output-dir OUTPUT-DIR] [--dry-run]
| Option | Description | |
|---|---|---|
--output-dir |
value | Directory to write generated *.conf files into |
--dry-run |
flag | Render configs to stdout summary without writing files |
coolms:web:check-links#
Crawl the live site and report broken links.
coolms:web:check-links [--base-url BASE-URL] [--host HOST] [--start START] [--max-pages MAX-PAGES] [--external]
| Option | Description | |
|---|---|---|
--base-url |
value | Origin to fetch from (the running server) |
--host |
value | Host header / vhost to audit (defaults to the base-url host) |
--start |
value | Comma-separated seed paths |
--max-pages |
value | Maximum pages to crawl |
--external |
flag | Also check external (off-site) links |
coolms:web:page-cache:purge#
Empty the full-page SSR cache.
coolms:web:page-cache:purge
coolms:web:scan-templates#
Audit explicit template assignments against installed themes; fails if the active theme cannot resolve one.
coolms:web:scan-templates [--theme THEME] [--strict]
| Option | Description | |
|---|---|---|
--theme |
value | Audit only this theme slug (default: every installed theme). |
--strict |
flag | Fail if ANY theme has an unresolved assignment, not only the active one. |
Word#
coolms:word:drop-refused-links#
Rewrite stored .ddoc files and their revisions without the links whose target runs code (a dry run unless --apply).
coolms:word:drop-refused-links [--apply] [--force] [--revisions-only] [--path-prefix PATH-PREFIX] [--backup-dir BACKUP-DIR]
| Option | Description | |
|---|---|---|
--apply |
flag | Write the rewritten files and revisions (a dry run without it). |
--force |
flag | With --apply and no one at the terminal: act anyway. |
--revisions-only |
flag | Only the stored revisions; read no file through the VFS. |
--path-prefix |
value | Only the files under this path. |
--backup-dir |
value | Where --apply keeps the bytes it replaces. |
coolms:word:seed-ddoc-demo#
Write a demo native document (.ddoc) carrying a header, a footer, a footnote and Letter landscape paper, so the document editor has something to open.
coolms:word:seed-ddoc-demo [<path>]
| Option | Description | |
|---|---|---|
path |
optional | Where to write it |
Workflow#
coolms:workflow:broadcast-signal#
Broadcast a signal to the Workflow engine, resuming every matching parked token.
coolms:workflow:broadcast-signal [-p|--payload PAYLOAD] [--] <signalName>
| Option | Description | |
|---|---|---|
signalName |
required | BPMN-Lite signal name (e.g. "OrderCancelled", "SystemMaintenance"). |
--payload / -p |
value | JSON object shallow-merged into every matched process instance's variables. |
coolms:workflow:fork-to-vfs#
Fork a contributor-source workflow definition to a locally-editable VFS draft.
coolms:workflow:fork-to-vfs <definitionKey>
| Option | Description | |
|---|---|---|
definitionKey |
required | The workflow definition key to fork (e.g. "identity.verify_new_user_spine"). |
coolms:workflow:migrate-to-packages#
Upgrade /workflows/{key}/ folders to Packages with the workflow virtual mime + flip deployed version files to read-only.
coolms:workflow:migrate-to-packages [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Preview proposed mutations without persisting. |
coolms:workflow:ps#
List workflow process instances.
coolms:workflow:ps [-a|--all] [--] [<aux>]
| Option | Description | |
|---|---|---|
aux |
optional | The bare word aux, for muscle memory. |
--all / -a |
flag | Include finished and failed instances. |
coolms:workflow:reclaim-external-tasks#
Reclaim expired-locked external tasks back to claimable (worker-died sweep).
coolms:workflow:reclaim-external-tasks [-l|--limit LIMIT]
| Option | Description | |
|---|---|---|
--limit / -l |
value | Maximum number of expired-locked tasks to reclaim in this sweep. |
coolms:workflow:revert-to-module#
Revert a forked workflow definition back to the module-shipped contributor baseline.
coolms:workflow:revert-to-module <definitionKey>
| Option | Description | |
|---|---|---|
definitionKey |
required | The workflow definition key to revert (e.g. "identity.verify_new_user_spine"). |
coolms:workflow:throw-message#
Throw a correlation message at the Workflow engine, resuming any matching parked tokens.
coolms:workflow:throw-message [-p|--payload PAYLOAD] [--] <messageName> <correlationKey>
| Option | Description | |
|---|---|---|
messageName |
required | BPMN-Lite message name (e.g. "UserRegistered", "ResendRequested.email"). |
correlationKey |
required | Per-instance correlation value (usually a business id — user UUID, order id, ...). |
--payload / -p |
value | JSON object shallow-merged into matched process instances' variables. |
(CoolMS)#
coolms:doctor#
The number that should be zero: long-running dependencies that do not answer when asked
coolms:doctor [--json]
| Option | Description | |
|---|---|---|
--json |
flag | Machine-readable report on stdout |
coolms:field:definition:create#
Create a new field definition.
coolms:field:definition:create [--entity-alias ENTITY-ALIAS] [--name NAME] [--type TYPE] [--label LABEL] [--required] [--sort-order SORT-ORDER]
| Option | Description | |
|---|---|---|
--entity-alias |
value | Entity alias (e.g. product, customer) |
--name |
value | Field name (lowercase, underscores allowed) |
--type |
value | Field type (text|textarea|richtext|localizedText|localizedTextarea|number|integer|money|boolean|date|select|relation|tags|taxonomy|image|json) |
--label |
value | Human-readable label (optional) |
--required |
flag | Mark field as required (adds NotBlank constraint) |
--sort-order |
value | Sort order in forms (default 0) |
coolms:field:definition:list#
List field definitions (optionally filtered by entity alias).
coolms:field:definition:list [<entity-alias>]
| Option | Description | |
|---|---|---|
entity-alias |
optional | Entity alias to filter by (omit to list all) |
coolms:field:prune-undeclared#
Delete the system field definitions no module YAML declares any more. A dry run unless --execute.
coolms:field:prune-undeclared [--execute] [--force]
| Option | Description | |
|---|---|---|
--execute |
flag | Delete. Without it the command reports and changes nothing. |
--force |
flag | Do not ask. Required with --execute under --no-interaction. |
coolms:install#
Install CoolMS2 VFS structure (runs all module VFS installers)
coolms:install
coolms:module:remove#
Stop a module loading and undo what its installation created (deletes no data)
coolms:module:remove [--dry-run] [--] <module>
| Option | Description | |
|---|---|---|
module |
required | Module name, as declared by its bundle |
--dry-run |
flag | Report what would be undone and change nothing |
coolms:module:restore#
Load a removed module again and put its configuration back
coolms:module:restore [--dry-run] [--] <module>
| Option | Description | |
|---|---|---|
module |
required | Module name, as declared by its bundle |
--dry-run |
flag | Report what would be restored and change nothing |
coolms:retention:prune#
Run every registered retention sweep (analytics, comments, credentials, ...) in one pass.
coolms:retention:prune [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Report how many rows WOULD be pruned by each registered pruner, without deleting anything. |
coolms:secret:generate-key#
Generate a base64 master key for the platform key ring.
coolms:secret:generate-key
coolms:secret:rotate#
Re-seal every sealed value still under the previous master key and report what remains per kind.
coolms:secret:rotate [--dry-run]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Count per kind without re-sealing anything: the number that must be zero before the previous key is dropped |
coolms:taxonomy:node:list#
List taxonomy nodes.
coolms:taxonomy:node:list [--type TYPE] [--tree TREE]
| Option | Description | |
|---|---|---|
--type |
value | Filter by discriminator type (e.g. taxonomy_node, dynamic_entity_type) |
--tree |
value | Filter by tree code (e.g. dynamic_entity_types, default) |
coolms:taxonomy:tree:create#
Create a new TaxonomyTree (named tree scope).
coolms:taxonomy:tree:create [--code CODE] [--name NAME]
| Option | Description | |
|---|---|---|
--code |
value | Unique machine code (e.g. catalog, products) |
--name |
value | Human-readable name (e.g. "Product Catalog") |
(api)#
api:json-schema:generate#
Generates the JSON Schema for a resource operation.
api:json-schema:generate [--operation OPERATION] [--format FORMAT] [--type TYPE] [--] <resource>
| Option | Description | |
|---|---|---|
resource |
required | The Fully Qualified Class Name (FQCN) of the resource |
--operation |
value | The operation name |
--format |
value | The response format |
--type |
value | The type of schema to generate (input or output) |
api:openapi:export#
Dump the Open API documentation
api:openapi:export [-y|--yaml] [-o|--output OUTPUT] [--spec-version SPEC-VERSION] [--api-gateway] [--filter-tags FILTER-TAGS]
| Option | Description | |
|---|---|---|
--yaml / -y |
flag | Dump the documentation in YAML |
--output / -o |
value | Write output to file |
--spec-version |
value | Open API version to use (2 or 3) (2 is deprecated) |
--api-gateway |
flag | Enable the Amazon API Gateway compatibility mode |
--filter-tags |
value | Filter only matching x-apiplatform-tag operations |
(assets)#
assets:install#
Install bundle's web assets under a public directory
assets:install [--symlink] [--relative] [--no-cleanup] [--] [<target>]
| Option | Description | |
|---|---|---|
target |
optional | The target directory |
--symlink |
flag | Symlink the assets instead of copying them |
--relative |
flag | Make relative symlinks |
--no-cleanup |
flag | Do not remove the assets of the bundles that no longer exist |
(cache)#
cache:clear#
Clear the cache
cache:clear [--no-warmup] [--no-optional-warmers]
| Option | Description | |
|---|---|---|
--no-warmup |
flag | Do not warm up the cache |
--no-optional-warmers |
flag | Skip optional cache warmers (faster) |
cache:pool:clear#
Clear cache pools
cache:pool:clear [--all] [--exclude EXCLUDE] [--] [<pools>...]
| Option | Description | |
|---|---|---|
pools |
optional | A list of cache pools or cache pool clearers |
--all |
flag | Clear all cache pools |
--exclude |
value | A list of cache pools or cache pool clearers to exclude |
cache:pool:delete#
Delete an item from a cache pool
cache:pool:delete <pool> <key>
| Option | Description | |
|---|---|---|
pool |
required | The cache pool from which to delete an item |
key |
required | The cache key to delete from the pool |
cache:pool:invalidate-tags#
Invalidate cache tags for all or a specific pool
cache:pool:invalidate-tags [-p|--pool POOL] [--] <tags>...
| Option | Description | |
|---|---|---|
tags |
required | The tags to invalidate |
--pool / -p |
value | The pools to invalidate on |
cache:pool:list#
List available cache pools
cache:pool:list
cache:pool:prune#
Prune cache pools
cache:pool:prune
cache:warmup#
Warm up an empty cache
cache:warmup [--no-optional-warmers]
| Option | Description | |
|---|---|---|
--no-optional-warmers |
flag | Skip optional cache warmers (faster) |
(config)#
config:dump-reference#
Dump the default configuration for an extension
config:dump-reference [--format FORMAT] [--] [<name> [<path>]]
| Option | Description | |
|---|---|---|
name |
optional | The Bundle name or the extension alias |
path |
optional | The configuration option path |
--format |
value | The output format ("yaml", "xml") |
(coolms)#
coolms:gen:entity#
Generate a PHP 8.5 entity class from a registered FormConfig.
coolms:gen:entity [--base-class BASE-CLASS] [--table-name TABLE-NAME] [--config-format CONFIG-FORMAT] [--dry-run] [--force] [--] <form_id> <module_name>
| Option | Description | |
|---|---|---|
form_id |
required | Form ID as registered in FormConfigRegistry (e.g. user_profile) |
module_name |
required | Target Symfony module name — used for namespace and directory (e.g. Authentication) |
--base-class |
value | Override the base class FQCN. Pass empty string to disable auto-detection. |
--table-name |
value | Override the Doctrine table name (default: {form_id}s) |
--config-format |
value | Format used when back-filling data_class into the form config (yaml|php) |
--dry-run |
flag | Print generated code to stdout without writing to disk |
--force |
flag | Overwrite an existing file without confirmation |
(core)#
about#
Display information about the current project
about
completion#
Dump the shell completion script
completion [--debug] [--] [<shell>]
| Option | Description | |
|---|---|---|
shell |
optional | The shell type (e.g. "bash"), the value of the "$SHELL" env var will be used if this is not given |
--debug |
flag | Tail the completion debug log |
help#
Display help for a command
help [--format FORMAT] [--raw] [--] [<command_name>]
| Option | Description | |
|---|---|---|
command_name |
optional | The command name |
--format |
value | The output format (txt, xml, json, or md) |
--raw |
flag | To output raw command help |
list#
List commands
list [--raw] [--format FORMAT] [--short] [--] [<namespace>]
| Option | Description | |
|---|---|---|
namespace |
optional | The namespace name |
--raw |
flag | To output raw command list |
--format |
value | The output format (txt, xml, json, or md) |
--short |
flag | To skip describing commands' arguments |
(dbal)#
dbal:run-sql#
Executes arbitrary SQL directly from the command line.
dbal:run-sql [--connection CONNECTION] [--depth DEPTH] [--force-fetch] [--] <sql>
| Option | Description | |
|---|---|---|
sql |
required | The SQL statement to execute. |
--connection |
value | The named database connection |
--depth |
value | Dumping depth of result set (deprecated). |
--force-fetch |
flag | Forces fetching the result. |
(debug)#
debug:api-resource#
Debug API Platform resources
debug:api-resource <class>
| Option | Description | |
|---|---|---|
class |
required | The class you want to debug |
debug:autowiring#
List classes/interfaces you can use for autowiring
debug:autowiring [--all] [--] [<search>]
| Option | Description | |
|---|---|---|
search |
optional | A search filter |
--all |
flag | Show also services that are not aliased |
debug:config#
Dump the current configuration for an extension
debug:config [--resolve-env] [--format FORMAT] [--] [<name> [<path>]]
| Option | Description | |
|---|---|---|
name |
optional | The bundle name or the extension alias |
path |
optional | The configuration option path |
--resolve-env |
flag | Display resolved environment variable values instead of placeholders |
--format |
value | The output format ("txt", "yaml", "json") |
debug:container#
Display current services for an application
debug:container [--show-hidden] [--tag TAG] [--tags] [--parameter PARAMETER] [--parameters] [--types] [--env-var ENV-VAR] [--env-vars] [--format FORMAT] [--raw] [--deprecations] [--] [<name>]
| Option | Description | |
|---|---|---|
name |
optional | A service name (foo) |
--show-hidden |
flag | Show hidden (internal) services |
--tag |
value | Show all services with a specific tag |
--tags |
flag | Display tagged services for an application |
--parameter |
value | Display a specific parameter for an application |
--parameters |
flag | Display parameters for an application |
--types |
flag | Display types (classes/interfaces) available in the container |
--env-var |
value | Display a specific environment variable used in the container |
--env-vars |
flag | Display environment variables used in the container |
--format |
value | The output format ("txt", "xml", "json", "md") |
--raw |
flag | To output raw description |
--deprecations |
flag | Display deprecations generated when compiling and warming up the container |
debug:dotenv#
List all dotenv files with variables and values
debug:dotenv [<filter>]
| Option | Description | |
|---|---|---|
filter |
optional | The name of an environment variable or a filter. |
debug:event-dispatcher#
Display configured listeners for an application
debug:event-dispatcher [--dispatcher DISPATCHER] [--format FORMAT] [--raw] [--] [<event>]
| Option | Description | |
|---|---|---|
event |
optional | An event name or a part of the event name |
--dispatcher |
value | To view events of a specific event dispatcher |
--format |
value | The output format ("txt", "xml", "json", "md") |
--raw |
flag | To output raw description |
debug:firewall#
Display information about your security firewall(s)
debug:firewall [--events] [--] [<name>]
| Option | Description | |
|---|---|---|
name |
optional | A firewall name (for example "main") |
--events |
flag | Include a list of event listeners (only available in combination with the "name" argument) |
debug:form#
Display form type information
debug:form [--show-deprecated] [--format FORMAT] [--] [<class> [<option>]]
| Option | Description | |
|---|---|---|
class |
optional | The form type class |
option |
optional | The form type option |
--show-deprecated |
flag | Display deprecated options in form types |
--format |
value | The output format ("txt", "json") |
debug:messenger#
List messages you can dispatch using the message buses
debug:messenger [<bus>]
| Option | Description | |
|---|---|---|
bus |
optional | The bus id (one of "event.bus") |
debug:router#
Display current routes for an application
debug:router [--show-controllers] [--show-aliases] [--format FORMAT] [--raw] [--sort SORT] [--method METHOD] [--] [<name>]
| Option | Description | |
|---|---|---|
name |
optional | A route name |
--show-controllers |
flag | Show assigned controllers in overview |
--show-aliases |
flag | Show aliases in overview |
--format |
value | The output format ("txt", "xml", "json", "md") |
--raw |
flag | To output raw route(s) |
--sort |
value | Sort routes by the given column ("name", "path", "method", "scheme", "host") |
--method |
value | Filter by HTTP method |
debug:security:role-hierarchy#
Dump the role hierarchy as a Mermaid flowchart
debug:security:role-hierarchy [-d|--direction DIRECTION]
| Option | Description | |
|---|---|---|
--direction / -d |
value | The direction of the flowchart [TB|TD|BT|RL|LR] |
debug:serializer#
Display serialization information for classes
debug:serializer <class>
| Option | Description | |
|---|---|---|
class |
required | A fully qualified class name |
debug:translation#
Display translation messages information
debug:translation [--domain DOMAIN] [--only-missing] [--only-unused] [--all] [--] <locale> [<bundle>]
| Option | Description | |
|---|---|---|
locale |
required | The locale |
bundle |
optional | The bundle name or directory where to load the messages |
--domain |
value | The messages domain |
--only-missing |
flag | Display only missing messages |
--only-unused |
flag | Display only unused messages |
--all |
flag | Load messages from all registered bundles |
debug:twig#
Show a list of twig functions, filters, globals and tests
debug:twig [--filter FILTER] [--format FORMAT] [--] [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The template name |
--filter |
value | Show details for all entries matching this filter |
--format |
value | The output format ("txt", "json") |
debug:validator#
Display validation constraints for classes
debug:validator [--show-all] [--] <class>
| Option | Description | |
|---|---|---|
class |
required | A fully qualified class name or a path |
--show-all |
flag | Show all classes even if they have no validation constraints |
(doctrine)#
doctrine:cache:clear-collection-region#
Clear a second-level cache collection region
doctrine:cache:clear-collection-region [--em EM] [--all] [--flush] [--] [<owner-class> [<association> [<owner-id>]]]
| Option | Description | |
|---|---|---|
owner-class |
optional | The owner entity name. |
association |
optional | The association collection name. |
owner-id |
optional | The owner identifier. |
--em |
value | Name of the entity manager to operate on |
--all |
flag | If defined, all entity regions will be deleted/invalidated. |
--flush |
flag | If defined, all cache entries will be flushed. |
doctrine:cache:clear-entity-region#
Clear a second-level cache entity region
doctrine:cache:clear-entity-region [--em EM] [--all] [--flush] [--] [<entity-class> [<entity-id>]]
| Option | Description | |
|---|---|---|
entity-class |
optional | The entity name. |
entity-id |
optional | The entity identifier. |
--em |
value | Name of the entity manager to operate on |
--all |
flag | If defined, all entity regions will be deleted/invalidated. |
--flush |
flag | If defined, all cache entries will be flushed. |
doctrine:cache:clear-metadata#
Clear all metadata cache of the various cache drivers
doctrine:cache:clear-metadata [--em EM] [--flush]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
--flush |
flag | If defined, cache entries will be flushed instead of deleted/invalidated. |
doctrine:cache:clear-query#
Clear all query cache of the various cache drivers
doctrine:cache:clear-query [--em EM]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
doctrine:cache:clear-query-region#
Clear a second-level cache query region
doctrine:cache:clear-query-region [--em EM] [--all] [--flush] [--] [<region-name>]
| Option | Description | |
|---|---|---|
region-name |
optional | The query region to clear. |
--em |
value | Name of the entity manager to operate on |
--all |
flag | If defined, all query regions will be deleted/invalidated. |
--flush |
flag | If defined, all cache entries will be flushed. |
doctrine:cache:clear-result#
Clear all result cache of the various cache drivers
doctrine:cache:clear-result [--em EM] [--flush]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
--flush |
flag | If defined, cache entries will be flushed instead of deleted/invalidated. |
doctrine:database:create#
Creates the configured database
doctrine:database:create [-c|--connection CONNECTION] [--if-not-exists]
| Option | Description | |
|---|---|---|
--connection / -c |
value | The connection to use for this command |
--if-not-exists |
flag | Don't trigger an error, when the database already exists |
doctrine:database:drop#
Drops the configured database
doctrine:database:drop [-c|--connection CONNECTION] [--if-exists] [-f|--force]
| Option | Description | |
|---|---|---|
--connection / -c |
value | The connection to use for this command |
--if-exists |
flag | Don't trigger an error, when the database doesn't exist |
--force / -f |
flag | Set this parameter to execute this action |
doctrine:debug:entity-listeners#
Lists entity listeners for a given entity
doctrine:debug:entity-listeners [<entity> [<event>]]
| Option | Description | |
|---|---|---|
entity |
optional | The fully-qualified entity class name |
event |
optional | The event name to filter by (e.g. postPersist) |
doctrine:debug:event-manager#
Lists event listeners for an entity manager
doctrine:debug:event-manager [--em EM] [--] [<event>]
| Option | Description | |
|---|---|---|
event |
optional | The event name to filter by (e.g. postPersist) |
--em |
value | The entity manager to use for this command |
doctrine:fixtures:load#
Load data fixtures to your database
doctrine:fixtures:load [--append] [--dry-run] [--group GROUP] [--em EM] [--purger PURGER] [--purge-exclusions PURGE-EXCLUSIONS] [--purge-with-truncate]
| Option | Description | |
|---|---|---|
--append |
flag | Append the data fixtures instead of deleting all data from the database first. |
--dry-run |
flag | Load the fixtures as a dry run. |
--group |
value | Only load fixtures that belong to this group |
--em |
value | The entity manager to use for this command. |
--purger |
value | The purger to use for this command |
--purge-exclusions |
value | List of database tables to ignore while purging |
--purge-with-truncate |
flag | Purge data by using a database-level TRUNCATE statement |
doctrine:mapping:describe#
Display information about mapped objects
doctrine:mapping:describe [--em EM] [--format FORMAT] [--] <entityName>
| Option | Description | |
|---|---|---|
entityName |
required | Full or partial name of entity |
--em |
value | Name of the entity manager to operate on |
--format |
value | Output format (text, json) |
doctrine:mapping:info#
Show basic information about all mapped entities
doctrine:mapping:info [--em EM]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
doctrine:migrations:current#
Outputs the current version
doctrine:migrations:current [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:diff#
Generate a migration by comparing your current database to your mapping information.
doctrine:migrations:diff [--configuration CONFIGURATION] [--em EM] [--conn CONN] [--namespace NAMESPACE] [--filter-expression FILTER-EXPRESSION] [--formatted] [--nowdoc|--no-nowdoc] [--line-length LINE-LENGTH] [--check-database-platform [CHECK-DATABASE-PLATFORM]] [--allow-empty-diff] [--from-empty-schema]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
--namespace |
value | The namespace to use for the migration (must be in the list of configured namespaces) |
--filter-expression |
value | Tables which are filtered by Regular Expression. |
--formatted |
flag | Format the generated SQL. |
--nowdoc |
flag | Output the generated SQL as a nowdoc string (enabled by default for formatted queries). |
--no-nowdoc |
flag | Negate the "--nowdoc" option |
--line-length |
value | Max line length of unformatted lines. |
--check-database-platform |
value | Check Database Platform to the generated code. |
--allow-empty-diff |
flag | Do not throw an exception when no changes are detected. |
--from-empty-schema |
flag | Generate a full migration as if the current database was empty. |
doctrine:migrations:dump-schema#
Dump the schema for your database to a migration.
doctrine:migrations:dump-schema [--configuration CONFIGURATION] [--em EM] [--conn CONN] [--formatted] [--nowdoc|--no-nowdoc] [--namespace NAMESPACE] [--filter-tables FILTER-TABLES] [--line-length LINE-LENGTH]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
--formatted |
flag | Format the generated SQL. |
--nowdoc |
flag | Output the generated SQL as a nowdoc string (enabled by default for formatted queries). |
--no-nowdoc |
flag | Negate the "--nowdoc" option |
--namespace |
value | Namespace to use for the generated migrations (defaults to the first namespace definition). |
--filter-tables |
value | Filter the tables to dump via Regex. |
--line-length |
value | Max line length of unformatted lines. |
doctrine:migrations:execute#
Execute one or more migration versions up or down manually.
doctrine:migrations:execute [--write-sql [WRITE-SQL]] [--dry-run] [--up] [--down] [--query-time] [--configuration CONFIGURATION] [--em EM] [--conn CONN] [--] <versions>...
| Option | Description | |
|---|---|---|
versions |
required | The versions to execute. |
--write-sql |
value | The path to output the migration SQL file. Defaults to current working directory. |
--dry-run |
flag | Execute the migration as a dry run. |
--up |
flag | Execute the migration up. |
--down |
flag | Execute the migration down. |
--query-time |
flag | Time all the queries individually. |
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:generate#
Generate a blank migration class.
doctrine:migrations:generate [--namespace NAMESPACE] [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--namespace |
value | The namespace to use for the migration (must be in the list of configured namespaces) |
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:latest#
Outputs the latest version
doctrine:migrations:latest [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:list#
Display a list of all available migrations and their status.
doctrine:migrations:list [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:migrate#
Execute a migration to a specified version or the latest available version.
doctrine:migrations:migrate [--write-sql [WRITE-SQL]] [--dry-run] [--query-time] [--allow-no-migration] [--all-or-nothing [ALL-OR-NOTHING]] [--no-all-or-nothing] [--configuration CONFIGURATION] [--em EM] [--conn CONN] [--] [<version>]
| Option | Description | |
|---|---|---|
version |
optional | The version FQCN or alias (first, prev, next, latest) to migrate to. |
--write-sql |
value | The path to output the migration SQL file. Defaults to current working directory. |
--dry-run |
flag | Execute the migration as a dry run. |
--query-time |
flag | Time all the queries individually. |
--allow-no-migration |
flag | Do not throw an exception if no migration is available. |
--all-or-nothing |
value | Wrap the entire migration in a transaction. |
--no-all-or-nothing |
flag | Disable wrapping the entire migration in a transaction. |
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:rollup#
Rollup migrations by deleting all tracked versions and insert the one version that exists.
doctrine:migrations:rollup [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:status#
View the status of a set of migrations.
doctrine:migrations:status [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:sync-metadata-storage#
Ensures that the metadata storage is at the latest version.
doctrine:migrations:sync-metadata-storage [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:up-to-date#
Tells you if your schema is up-to-date.
doctrine:migrations:up-to-date [-u|--fail-on-unregistered] [-l|--list-migrations] [--configuration CONFIGURATION] [--em EM] [--conn CONN]
| Option | Description | |
|---|---|---|
--fail-on-unregistered / -u |
flag | Whether to fail when there are unregistered extra migrations found |
--list-migrations / -l |
flag | Show a list of missing or not migrated versions. |
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:migrations:version#
Manually add and delete migration versions from the version table.
doctrine:migrations:version [--add] [--delete] [--all] [--range-from RANGE-FROM] [--range-to RANGE-TO] [--configuration CONFIGURATION] [--em EM] [--conn CONN] [--] [<version>]
| Option | Description | |
|---|---|---|
version |
optional | The version to add or delete. |
--add |
flag | Add the specified version. |
--delete |
flag | Delete the specified version. |
--all |
flag | Apply to all the versions. |
--range-from |
value | Apply from specified version. |
--range-to |
value | Apply to specified version. |
--configuration |
value | The path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}] |
--em |
value | The name of the entity manager to use. |
--conn |
value | The name of the connection to use. |
doctrine:query:dql#
Executes arbitrary DQL directly from the command line
doctrine:query:dql [--em EM] [--hydrate HYDRATE] [--first-result FIRST-RESULT] [--max-result MAX-RESULT] [--depth DEPTH] [--show-sql] [--] <dql>
| Option | Description | |
|---|---|---|
dql |
required | The DQL to execute. |
--em |
value | Name of the entity manager to operate on |
--hydrate |
value | Hydration mode of result set. Should be either: object, array, scalar or single-scalar. |
--first-result |
value | The first result in the result set. |
--max-result |
value | The maximum number of results in the result set. |
--depth |
value | Dumping depth of Entity graph. |
--show-sql |
flag | Dump generated SQL instead of executing query |
doctrine:schema:create#
Processes the schema and either create it directly on EntityManager Storage Connection or generate the SQL output
doctrine:schema:create [--em EM] [--dump-sql]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
--dump-sql |
flag | Instead of trying to apply generated SQLs into EntityManager Storage Connection, output them. |
doctrine:schema:drop#
Drop the complete database schema of EntityManager Storage Connection or generate the corresponding SQL output
doctrine:schema:drop [--em EM] [--dump-sql] [-f|--force] [--full-database]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
--dump-sql |
flag | Instead of trying to apply generated SQLs into EntityManager Storage Connection, output them. |
--force / -f |
flag | Don't ask for the deletion of the database, but force the operation to run. |
--full-database |
flag | Instead of using the Class Metadata to detect the database table schema, drop ALL assets that the database contains. |
doctrine:schema:update#
Executes (or dumps) the SQL needed to update the database schema to match the current mapping metadata
doctrine:schema:update [--em EM] [--complete] [--dump-sql] [-f|--force]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
--complete |
flag | This option is a no-op, is deprecated and will be removed in 4.0 |
--dump-sql |
flag | Dumps the generated SQL statements to the screen (does not execute them). |
--force / -f |
flag | Causes the generated SQL statements to be physically executed against your database. |
doctrine:schema:validate#
Validate the mapping files
doctrine:schema:validate [--em EM] [--skip-mapping] [--skip-sync] [--skip-property-types]
| Option | Description | |
|---|---|---|
--em |
value | Name of the entity manager to operate on |
--skip-mapping |
flag | Skip the mapping validation check |
--skip-sync |
flag | Skip checking if the mapping is in sync with the database |
--skip-property-types |
flag | Skip checking if property types match the Doctrine types |
(error)#
error:dump#
Dump error pages to plain HTML files that can be directly served by a web server
error:dump [-f|--force] [--] <path> [<status-codes>...]
| Option | Description | |
|---|---|---|
path |
required | Path where to dump the error pages in |
status-codes |
optional | Status codes to dump error pages for, all of them by default |
--force / -f |
flag | Force directory removal before dumping new error pages |
(flysystem)#
flysystem:pull#
Pull a file from a configured Flysystem storage to the local filesystem.
flysystem:pull [--force] [--] <storage> <source> [<destination>]
| Option | Description | |
|---|---|---|
storage |
required | The configured Flysystem storage name. |
source |
required | The source path to transfer. |
destination |
optional | The destination path. Defaults to the source basename. |
--force |
flag | Overwrite the destination file if it already exists. |
flysystem:push#
Push a local file to a configured Flysystem storage.
flysystem:push [--force] [--] <storage> <source> [<destination>]
| Option | Description | |
|---|---|---|
storage |
required | The configured Flysystem storage name. |
source |
required | The source path to transfer. |
destination |
optional | The destination path. Defaults to the source basename. |
--force |
flag | Overwrite the destination file if it already exists. |
(lexik)#
lexik:jwt:check-config#
Checks that the bundle is properly configured.
lexik:jwt:check-config
lexik:jwt:enable-encryption#
Enable Web-Token encryption support.
lexik:jwt:enable-encryption [-f|--force]
| Option | Description | |
|---|---|---|
--force / -f |
flag | Force the modification of the configuration, even if already set. |
lexik:jwt:generate-keypair#
Generate public/private keys for use in your application.
lexik:jwt:generate-keypair [--dry-run] [--skip-if-exists] [--overwrite]
| Option | Description | |
|---|---|---|
--dry-run |
flag | Do not update key files. |
--skip-if-exists |
flag | Do not update key files if they already exist. |
--overwrite |
flag | Overwrite key files if they already exist. |
lexik:jwt:generate-token#
Generates a JWT token for a given user.
lexik:jwt:generate-token [-t|--ttl TTL] [-c|--user-class USER-CLASS] [--] <username>
| Option | Description | |
|---|---|---|
username |
required | Username of user to be retreived from user provider |
--ttl / -t |
value | Ttl in seconds to be added to current time. If not provided, the ttl configured in the bundle will be used. Use 0 to generate token without exp |
--user-class / -c |
value | Userclass is used to determine which user provider to use |
lexik:jwt:migrate-config#
Migrate LexikJWTAuthenticationBundle configuration to the Web-Token one.
lexik:jwt:migrate-config
(lint)#
lint:container#
Ensure that arguments injected into services match type declarations
lint:container [--resolve-env-vars]
| Option | Description | |
|---|---|---|
--resolve-env-vars |
flag | Resolve environment variables and fail if one is missing. |
lint:translations#
Lint translations files syntax and outputs encountered errors
lint:translations [--locale LOCALE]
| Option | Description | |
|---|---|---|
--locale |
value | Specify the locales to lint. |
lint:twig#
Lint a Twig template and outputs encountered errors
lint:twig [--format FORMAT] [--show-deprecations] [--excludes EXCLUDES] [--] [<filename>...]
| Option | Description | |
|---|---|---|
filename |
optional | A file, a directory or "-" for reading from STDIN |
--format |
value | The output format ("txt", "json", "github") |
--show-deprecations |
flag | Show deprecations as errors |
--excludes |
value | Excluded directories |
lint:xliff#
Lint an XLIFF file and outputs encountered errors
lint:xliff [--format FORMAT] [--] [<filename>...]
| Option | Description | |
|---|---|---|
filename |
optional | A file, a directory or "-" for reading from STDIN |
--format |
value | The output format ("txt", "json", "github") |
lint:yaml#
Lint a YAML file and outputs encountered errors
lint:yaml [--format FORMAT] [--exclude EXCLUDE] [--parse-tags|--no-parse-tags] [--] [<filename>...]
| Option | Description | |
|---|---|---|
filename |
optional | A file, a directory or "-" for reading from STDIN |
--format |
value | The output format ("txt", "json", "github") |
--exclude |
value | Path(s) to exclude |
--parse-tags |
flag | Parse custom tags |
--no-parse-tags |
flag | Negate the "--parse-tags" option |
(mailer)#
mailer:test#
Test Mailer transports by sending an email
mailer:test [--from FROM] [--subject SUBJECT] [--body BODY] [--transport TRANSPORT] [--] <to>
| Option | Description | |
|---|---|---|
to |
required | The recipient of the message |
--from |
value | The sender of the message |
--subject |
value | The subject of the message |
--body |
value | The body of the message |
--transport |
value | The transport to be used |
(make)#
make:auth#
Create a Guard authenticator of different flavors
make:auth
make:command#
Create a new console command class
make:command [<name>]
| Option | Description | |
|---|---|---|
name |
optional | Choose a command name (e.g. <fg=yellow>app:orange-puppy</>) |
make:controller#
Create a new controller class
make:controller [--no-template] [--invokable] [--with-tests] [--] [<controller-class>]
| Option | Description | |
|---|---|---|
controller-class |
optional | Choose a name for your controller class (e.g. <fg=yellow>BravePizzaController</>) |
--no-template |
flag | Use this option to disable template generation |
--invokable |
flag | Use this option to create an invokable controller |
--with-tests |
flag | Generate PHPUnit Tests |
make:crud#
Create CRUD for Doctrine entity class
make:crud [--with-tests] [--] [<entity-class>]
| Option | Description | |
|---|---|---|
entity-class |
optional | The class name of the entity to create CRUD (e.g. <fg=yellow>DeliciousChef</>) |
--with-tests |
flag | Generate PHPUnit Tests |
make:docker:database#
Add a database container to your compose.yaml file
make:docker:database
make:entity#
Create or update a Doctrine entity class, and optionally an API Platform resource
make:entity [-a|--api-resource] [-b|--broadcast] [--regenerate] [--overwrite] [--with-uuid] [--with-ulid] [--] [<name>]
| Option | Description | |
|---|---|---|
name |
optional | Class name of the entity to create or update (e.g. <fg=yellow>FiercePuppy</>) |
--api-resource / -a |
flag | Mark this class as an API Platform resource (expose a CRUD API for it) |
--broadcast / -b |
flag | Add the ability to broadcast entity updates using Symfony UX Turbo? |
--regenerate |
flag | Instead of adding new fields, simply generate the methods (e.g. getter/setter) for existing fields |
--overwrite |
flag | Overwrite any existing getter/setter methods |
--with-uuid |
flag | Use UUID for entity "id" |
--with-ulid |
flag | Use ULID for entity "id" |
make:filter#
Creates an API Platform filter
make:filter [-p|--namespace-prefix NAMESPACE-PREFIX] [--] <type> <name>
| Option | Description | |
|---|---|---|
type |
required | Choose a type for your filter (<fg=yellow>ORM or ODM</>) |
name |
required | Choose a class name for your filter (e.g. <fg=yellow>AwesomeFilter</>) |
--namespace-prefix / -p |
value | Specify the namespace prefix to use for the filter class |
make:fixtures#
Create a new class to load Doctrine fixtures
make:fixtures [<fixtures-class>]
| Option | Description | |
|---|---|---|
fixtures-class |
optional | The class name of the fixtures to create (e.g. <fg=yellow>AppFixtures</>) |
make:form#
Create a new form class
make:form [<name> [<bound-class>]]
| Option | Description | |
|---|---|---|
name |
optional | The name of the form class (e.g. <fg=yellow>FierceElephantType</>) |
bound-class |
optional | The name of Entity or fully qualified model class name that the new form will be bound to (empty for none) |
make:listener#
Creates a new event subscriber class or a new event listener class
make:listener [<name> [<event>]]
make:subscriber
| Option | Description | |
|---|---|---|
name |
optional | Choose a class name for your event listener or subscriber (e.g. <fg=yellow>ExceptionListener</> or <fg=yellow>ExceptionSubscriber</>) |
event |
optional | What event do you want to listen to? |
make:message#
Create a new message and handler
make:message [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The name of the message class (e.g. <fg=yellow>SendEmailMessage</>) |
make:messenger-middleware#
Create a new messenger middleware
make:messenger-middleware [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The name of the middleware class (e.g. <fg=yellow>CustomMiddleware</>) |
make:migration#
Create a new migration based on database changes
make:migration [--formatted] [--nowdoc] [--configuration [CONFIGURATION]]
| Option | Description | |
|---|---|---|
--formatted |
flag | Format the generated SQL |
--nowdoc |
flag | Use nowdoc format for generated SQL |
--configuration |
value | The path of doctrine configuration file |
make:registration-form#
Create a new registration form system
make:registration-form [--with-tests]
| Option | Description | |
|---|---|---|
--with-tests |
flag | Generate PHPUnit Tests |
make:reset-password#
Create controller, entity, and repositories for use with symfonycasts/reset-password-bundle
make:reset-password [--with-uuid] [--with-ulid] [--with-tests]
| Option | Description | |
|---|---|---|
--with-uuid |
flag | Use UUID for entity "id" |
--with-ulid |
flag | Use ULID for entity "id" |
--with-tests |
flag | Generate PHPUnit Tests |
make:schedule#
Create a scheduler component
make:schedule
make:security:custom#
Create a custom security authenticator.
make:security:custom
make:security:form-login#
Generate the code needed for the form_login authenticator
make:security:form-login [--with-tests]
| Option | Description | |
|---|---|---|
--with-tests |
flag | Generate PHPUnit Tests |
make:serializer:encoder#
Create a new serializer encoder class
make:serializer:encoder [<name> [<format>]]
| Option | Description | |
|---|---|---|
name |
optional | Choose a class name for your encoder (e.g. <fg=yellow>YamlEncoder</>) |
format |
optional | Pick your format name (e.g. <fg=yellow>yaml</>) |
make:serializer:normalizer#
Create a new serializer normalizer class
make:serializer:normalizer [<name>]
| Option | Description | |
|---|---|---|
name |
optional | Choose a class name for your normalizer (e.g. <fg=yellow>UserNormalizer</>) |
make:state-processor#
Creates an API Platform state processor
make:state-processor [-p|--namespace-prefix NAMESPACE-PREFIX] [--] <name>
| Option | Description | |
|---|---|---|
name |
required | Choose a class name for your state processor (e.g. <fg=yellow>AwesomeStateProcessor</>) |
--namespace-prefix / -p |
value | Specify the namespace prefix to use for the state processor class |
make:state-provider#
Creates an API Platform state provider
make:state-provider [-p|--namespace-prefix NAMESPACE-PREFIX] [--] <name>
| Option | Description | |
|---|---|---|
name |
required | Choose a class name for your state provider (e.g. <fg=yellow>AwesomeStateProvider</>) |
--namespace-prefix / -p |
value | Specify the namespace prefix to use for the state provider class |
make:stimulus-controller#
Create a new Stimulus controller
make:stimulus-controller [-ts|--typescript] [--] <name>
| Option | Description | |
|---|---|---|
name |
required | The name of the Stimulus controller (e.g. <fg=yellow>hello</>) |
--typescript / -ts |
flag | Create a TypeScript controller (default is JavaScript) |
make:test#
Create a new test class
make:test [<type> [<name>]]
make:unit-test
make:functional-test
| Option | Description | |
|---|---|---|
type |
optional | The type of test: <fg=yellow>TestCase</> (basic PHPUnit tests), <fg=yellow>KernelTestCase</> (basic tests that have access to Symfony services), <fg=yellow>WebTestCase</> (to run browser-like scenarios, but that don't execute JavaScript code), <fg=yellow>ApiTestCase</> (to run API-oriented scenarios), <fg=yellow>PantherTestCase</> (to run e2e scenarios, using a real-browser or HTTP client and a real web server) |
name |
optional | The name of the test class (e.g. <fg=yellow>BlogPostTest</>) |
make:twig-component#
Create a Twig (or Live) component
make:twig-component [--live] [--] [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The name of your Twig component (ie <fg=yellow>Notification</>) |
--live |
flag | Whether to create a Live component (requires <fg=yellow>symfony/ux-live-component</>) |
make:twig-extension#
Create a new Twig extension with its runtime class
make:twig-extension [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The name of the Twig extension class (e.g. <fg=yellow>AppExtension</>) |
make:user#
Create a new security user class
make:user [--is-entity] [--identity-property-name IDENTITY-PROPERTY-NAME] [--with-password] [--with-uuid] [--with-ulid] [--] [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The name of the security user class (e.g. <fg=yellow>User</>) |
--is-entity |
flag | Do you want to store user data in the database (via Doctrine)? |
--identity-property-name |
value | Enter a property name that will be the unique "display" name for the user (e.g. email, username, uuid) |
--with-password |
flag | Will this app be responsible for checking the password? Choose No if the password is actually checked by some other system (e.g. a single sign-on server) |
--with-uuid |
flag | Use UUID for entity "id" |
--with-ulid |
flag | Use ULID for entity "id" |
make:validator#
Create a new validator and constraint class
make:validator [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The name of the validator class (e.g. <fg=yellow>EnabledValidator</>) |
make:voter#
Create a new security voter class
make:voter [<name>]
| Option | Description | |
|---|---|---|
name |
optional | The name of the security voter class (e.g. <fg=yellow>BlogPostVoter</>) |
make:webhook#
Create a new Webhook
make:webhook [<name>]
| Option | Description | |
|---|---|---|
name |
optional | Name of the webhook to create (e.g. <fg=yellow>github, stripe, ...</>) |
(messenger)#
messenger:consume#
Consume messages
messenger:consume [-l|--limit LIMIT] [-f|--failure-limit FAILURE-LIMIT] [-m|--memory-limit MEMORY-LIMIT] [-t|--time-limit TIME-LIMIT] [--sleep SLEEP] [-b|--bus BUS] [--queues QUEUES] [--no-reset [NO-RESET]] [--all] [--exclude-receivers EXCLUDE-RECEIVERS] [--keepalive [KEEPALIVE]] [--fetch-size FETCH-SIZE] [--] [<receivers>...]
| Option | Description | |
|---|---|---|
receivers |
optional | Names or regular expression patterns of the receivers/transports to consume in order of priority |
--limit / -l |
value | Limit the number of received messages |
--failure-limit / -f |
value | The number of failed messages the worker can consume |
--memory-limit / -m |
value | The memory limit the worker can consume |
--time-limit / -t |
value | The time limit in seconds the worker can handle new messages |
--sleep |
value | Seconds to sleep before asking for new messages after no messages were found |
--bus / -b |
value | Name of the bus to which received messages should be dispatched (if not passed, bus is determined automatically) |
--queues |
value | Limit receivers to only consume from the specified queues |
--no-reset |
value | Do not reset container services after each message, or pass a number to reset every N messages |
--all |
flag | Consume messages from all receivers |
--exclude-receivers |
value | Exclude specific receivers/transports from consumption (can only be used with --all) |
--keepalive |
value | Whether to use the transport's keepalive mechanism if implemented |
--fetch-size |
value | The number of messages to fetch per call to the transport |
messenger:setup-transports#
Prepare the required infrastructure for the transport
messenger:setup-transports [<transport>]
| Option | Description | |
|---|---|---|
transport |
optional | Name of the transport to setup |
messenger:stats#
Show the message count for one or more transports
messenger:stats [--format FORMAT] [--] [<transport_names>...]
| Option | Description | |
|---|---|---|
transport_names |
optional | List of transports' names |
--format |
value | The output format ("txt", "json") |
(router)#
router:match#
Help debug routes by simulating a path info match
router:match [--method METHOD] [--scheme SCHEME] [--host HOST] [--] <path_info>
| Option | Description | |
|---|---|---|
path_info |
required | A path info |
--method |
value | Set the HTTP method |
--scheme |
value | Set the URI scheme (usually http or https) |
--host |
value | Set the URI host |
(secrets)#
secrets:decrypt-to-local#
Decrypt all secrets and stores them in the local vault
secrets:decrypt-to-local [-f|--force]
| Option | Description | |
|---|---|---|
--force / -f |
flag | Force overriding of secrets that already exist in the local vault |
secrets:encrypt-from-local#
Encrypt all local secrets to the vault
secrets:encrypt-from-local
secrets:generate-keys#
Generate new encryption keys
secrets:generate-keys [-l|--local] [-r|--rotate]
| Option | Description | |
|---|---|---|
--local / -l |
flag | Update the local vault. |
--rotate / -r |
flag | Re-encrypt existing secrets with the newly generated keys. |
secrets:list#
List all secrets
secrets:list [-r|--reveal]
| Option | Description | |
|---|---|---|
--reveal / -r |
flag | Display decrypted values alongside names |
secrets:remove#
Remove a secret from the vault
secrets:remove [-l|--local] [--] <name>
| Option | Description | |
|---|---|---|
name |
required | The name of the secret |
--local / -l |
flag | Update the local vault. |
secrets:reveal#
Reveal the value of a secret
secrets:reveal <name>
| Option | Description | |
|---|---|---|
name |
required | The name of the secret to reveal |
secrets:set#
Set a secret in the vault
secrets:set [-l|--local] [-r|--random [RANDOM]] [--] <name> [<file>]
| Option | Description | |
|---|---|---|
name |
required | The name of the secret |
file |
optional | A file where to read the secret from or "-" for reading from STDIN |
--local / -l |
flag | Update the local vault. |
--random / -r |
value | Generate a random value. |
(security)#
security:hash-password#
Hash a user password
security:hash-password [--empty-salt] [--] [<password> [<user-class>]]
| Option | Description | |
|---|---|---|
password |
optional | The plain password to hash. |
user-class |
optional | The User entity class path associated with the hasher used to hash the password. |
--empty-salt |
flag | Do not generate a salt or let the hasher generate one. |
(translation)#
translation:extract#
Extract missing translations keys from code to translation files
translation:extract [--prefix PREFIX] [--no-fill] [--format FORMAT] [--dump-messages] [--force] [--clean] [--domain DOMAIN] [--sort SORT] [--as-tree AS-TREE] [--] <locale> [<bundle>]
| Option | Description | |
|---|---|---|
locale |
required | The locale |
bundle |
optional | The bundle name or directory where to load the messages |
--prefix |
value | Override the default prefix |
--no-fill |
flag | Extract translation keys without filling in values |
--format |
value | Override the default output format |
--dump-messages |
flag | Should the messages be dumped in the console |
--force |
flag | Should the extract be done |
--clean |
flag | Should clean not found messages |
--domain |
value | Specify the domain to extract |
--sort |
value | Return list of messages sorted alphabetically |
--as-tree |
value | Dump the messages as a tree-like structure: The given value defines the level where to switch to inline YAML |
translation:pull#
Pull translations from a given provider.
translation:pull [--force] [--intl-icu] [--domains DOMAINS] [--locales LOCALES] [--format FORMAT] [--as-tree AS-TREE] [--] <provider>
| Option | Description | |
|---|---|---|
provider |
required | The provider to pull translations from. |
--force |
flag | Override existing translations with provider ones (it will delete not synchronized messages). |
--intl-icu |
flag | Associated to --force option, it will write messages in "%domain%+intl-icu.%locale%.xlf" files. |
--domains |
value | Specify the domains to pull. |
--locales |
value | Specify the locales to pull. |
--format |
value | Override the default output format. |
--as-tree |
value | Write messages as a tree-like structure. Needs --format=yaml. The given value defines the level where to switch to inline YAML |
translation:push#
Push translations to a given provider.
translation:push [--force] [--delete-missing] [--domains DOMAINS] [--locales LOCALES] [--] <provider>
| Option | Description | |
|---|---|---|
provider |
required | The provider to push translations to. |
--force |
flag | Override existing translations with local ones (it will delete not synchronized messages). |
--delete-missing |
flag | Delete translations available on provider but not locally. |
--domains |
value | Specify the domains to push. |
--locales |
value | Specify the locales to push. |