CLI commands¶
Fujin Shuttle registers four console commands. The two you'll use directly are
fujin:shuttle:run (ad-hoc import) and fujin:shuttle:run-profile (tracked run of a stored
profile); fujin:shuttle:export writes a CSV; fujin:shuttle:media-worker is internal.
fujin:shuttle:run¶
Run a Fujin Shuttle import from a CSV file. No job tracking — fastest path for scripting and one-off loads.
| Argument | Required | Description |
|---|---|---|
file |
yes | Path to the CSV file. |
| Option | Default | Description |
|---|---|---|
--type |
product |
product | product_variants | category | entities_metadata | product_extra | inventory | rules |
--dry-run |
off | Resolve IDs but write nothing. |
--batch-size |
500 |
Rows per batch (per bulk INSERT). |
--reindex |
auto |
auto | full | none. |
--concurrency |
(config) | Max batches in flight (async driver). Falls back to the configured value. |
--media-mode |
(config) | filesaver | raw | worker — overrides config for this run. |
--media-workers |
(config) | Parallel subprocesses for worker media mode. |
--parent-category |
(config) | Parent category ID (hex) imported categories nest under. Default = storefront root. |
On completion it prints processed / success / empty / errors counts, the number of touched IDs, and the reindex mode used.
# 50k all-new products, no reindex during the run (rebuild after)
bin/console fujin:shuttle:run products.csv --type=product --reindex=none
bin/console dal:refresh:index
# Dry run to validate a file without writing
bin/console fujin:shuttle:run products.csv --dry-run
# Categories under a specific parent
bin/console fujin:shuttle:run categories.csv --type=category --parent-category=<hex>
fujin:shuttle:run-profile¶
Run a stored profile under a tracked
fujin_job— live progress, and honours a stop request from the admin (status flipped tostopping). The CLI counterpart of the admin Run button / queuedRunProfileMessage; the large-file headless path.
| Argument | Required | Description |
|---|---|---|
profile |
yes | Stored profile ID (hex). |
| Option | Default | Description |
|---|---|---|
--dry-run |
off | Resolve IDs but write nothing. |
It counts the rows, creates a job, runs it through the run monitor,
and prints the final status, processed, total and progress. Exit status reflects the
outcome (stopped → success with a warning; error → failure).
When to use which
Use run for throwaway/scripted imports where you don't need history or a stop button.
Use run-profile when you want the run recorded, resumable monitoring, and the ability
to stop it from the admin — especially for very large files.
fujin:shuttle:export¶
Export Fujin Shuttle data to a CSV file.
| Argument | Required | Description |
|---|---|---|
file |
yes | Output CSV path. |
| Option | Default | Description |
|---|---|---|
--type |
product |
Data type to export. |
--batch-size |
500 |
Rows per page (keyset pagination). |
--locales |
(empty) | Comma-separated non-default locales added as suffixed translation columns (product export), e.g. de-DE,en-GB. |
The exported columns are the canonical round-trip set — they re-import cleanly. See the CSV reference.
fujin:shuttle:media-worker¶
Internal. Imports a shard of media sources for the
workermedia strategy. Spawned as a subprocess by the import — not meant to be run by hand.
| Argument / option | Description |
|---|---|
in |
Path to a JSON file with the source list. |
out |
Path to write the JSON result map. |
--entity (product) |
Default media-folder entity. |
See Media import → worker mode for how this is used.