Console Commands
Overview of all console commands from the Guppy plugin family.
On this page:
Overview
| Command | Plugin | Description |
|---|---|---|
guppy:theme:create | DmfGuppyTheme | Create child theme |
guppy:install:plugins | DmfGuppyTheme | Install Guppy plugins |
guppy:upgrade:scan | DmfGuppyTheme | Check Shopware upgrade compatibility |
dmf:fonts:generate | DmfCustomFonts | Generate font CSS |
dmf:cms:export | DmfCmsImportExport | Export CMS page |
dmf:cms:import | DmfCmsImportExport | Import CMS page |
dmf:theme:export | DmfCmsImportExport | Export theme configuration |
dmf:theme:import | DmfCmsImportExport | Import theme configuration |
Guppy Theme
guppy:theme:create
Creates a new child theme based on the Guppy Theme.
bin/console guppy:theme:createThe command guides you interactively through theme creation:
- Theme Name: Name of the new theme (e.g.,
MyShopTheme) - Namespace: PHP namespace (e.g.,
MyShop\Theme) - Directory: Target directory for the theme
Generated Files:
src/[ThemeName].php- Plugin main classcomposer.json- Composer configurationtheme.json- Theme configurationsrc/Resources/app/storefront/src/main.js- JavaScript entry pointsrc/Resources/app/storefront/src/scss/base.scss- SCSS entry point
guppy:install:plugins
Installs and activates all Guppy plugins in the correct order.
bin/console guppy:install:pluginsInstalled Plugins:
- DmfGuppyEmotionworldElements
- DmfCmsCustomGrids
- DmfDropdownNavigation
- DmfCustomFonts
- (additional optional plugins)
guppy:upgrade:scan
Analyzes your project for compatibility with Shopware upgrades. Parses UPGRADE markdown files and reports specific code locations that need to be adjusted.
bin/console guppy:upgrade:scan --core=/path/to/shopware-core.zipSource Options
| Option | Description |
|---|---|
--core | Path to Shopware Core (ZIP or extracted directory) |
--upgrade | Direct UPGRADE source(s): local file, URL or - for STDIN (can be used multiple times) |
Scan Scope Options
| Option | Description |
|---|---|
--targets | Paths to scan (can be used multiple times). auto detects common Shopware directories |
--exclude | Paths to exclude relative to project root (can be used multiple times) |
Default Excludes: vendor, node_modules, .git, var, public/bundles
Composer Plugin Options
| Option | Description |
|---|---|
--composer | Additionally scan Composer plugins from composer.lock |
--composer-type | Filter Composer types (default: shopware-platform-plugin, shopware-plugin, shopware-app, shopware-bundle) |
--composer-name-like | Regex filter on package name, e.g., /^(guppy|mycompany)\// |
Execution Options
| Option | Description |
|---|---|
--since | Only scan files changed since Git ref (e.g., origin/main, v2.6.0) |
--use-rg | Use ripgrep for regex search (faster) |
--out | Target report file (default: var/upgrade-report.md) |
--dry-run | Only show extracted rules without scanning |
--format | Output format: markdown (default) or json |
--stats | Show summary statistics in report |
--extensions | Additional file extensions (e.g., jsx, tsx) |
Examples
Basic scan with Shopware Core ZIP:
bin/console guppy:upgrade:scan --core=/tmp/shopware-6.6.0.zipScan with UPGRADE file from URL:
bin/console guppy:upgrade:scan \
--upgrade=https://raw.githubusercontent.com/shopware/shopware/trunk/UPGRADE-6.6.mdScan only custom plugins (auto-detect):
bin/console guppy:upgrade:scan \
--core=/tmp/shopware-core \
--targets=autoOnly files changed since last release:
bin/console guppy:upgrade:scan \
--core=/tmp/shopware-core \
--since=v2.5.0 \
--use-rgComposer plugins with name filter:
bin/console guppy:upgrade:scan \
--core=/tmp/shopware-core \
--composer \
--composer-name-like="/^(dmf|guppy)\//"JSON report with statistics:
bin/console guppy:upgrade:scan \
--core=/tmp/shopware-core \
--format=json \
--stats \
--out=var/upgrade-report.jsonDry-run (show rules only):
bin/console guppy:upgrade:scan \
--core=/tmp/shopware-core \
--dry-runReport Output
The generated report contains:
- Version: Shopware version from UPGRADE file
- Type:
REMOVED,DEPRECATEDorCHANGED - Label: Description of the change (e.g.,
sw-checkbox-field → mt-checkbox) - Package: Affected plugin/theme
- File/Line: Specific location in code
- Snippet: Code excerpt
- Fix: Recommended correction
Example Output (Markdown):
### [6.6] REMOVED — sw-checkbox-field → mt-checkbox
**Package:** shopware-platform-plugin dmf/my-plugin — Hits: 3
| File | Line | Snippet |
|------|------|---------|
| `src/Resources/views/page.twig` | 42 | <sw-checkbox-field v-model="value" |
| `src/Resources/views/form.twig` | 18 | <sw-checkbox-field :disabled="true" |
> **Fix:** Replace `<sw-checkbox-field>` with `<mt-checkbox>` (including API adjustments).Custom Fonts
dmf:fonts:generate
Generates the font CSS file based on plugin configuration.
bin/console dmf:fonts:generateAutomatic Execution:
- On plugin activation
- On plugin update
- On configuration change
Usage: After uploading new font files or changing configuration, run manually:
bin/console dmf:fonts:generate
bin/console cache:clearCMS Import/Export
dmf:cms:export
Exports a CMS page (shopping experience) with all blocks, elements, and media.
bin/console dmf:cms:export --id=<cms-page-id> [--file=<filename>]| Option | Required | Description |
|---|---|---|
--id | Yes | UUID of the CMS page |
--file | No | Filename without extension (default: export) |
Examples:
# Export with automatic filename
bin/console dmf:cms:export --id=a1b2c3d4e5f6789012345678
# Export with custom filename
bin/console dmf:cms:export --id=a1b2c3d4e5f6789012345678 --file=homepage-backupOutput: var/export/[filename].gz
dmf:cms:import
Imports a previously exported CMS page.
bin/console dmf:cms:import --file=<filepath>| Option | Required | Description |
|---|---|---|
--file | Yes | Path to export file (.gz) |
Example:
bin/console dmf:cms:import --file=var/export/homepage-backup.gzINFO
New UUIDs are generated during import, so no conflicts with existing pages occur.
dmf:theme:export
Exports the theme configuration of a sales channel.
bin/console dmf:theme:export --id=<theme-id> [--file=<filename>]| Option | Required | Description |
|---|---|---|
--id | Yes | UUID of the theme |
--file | No | Filename without extension (default: export) |
Example:
bin/console dmf:theme:export --id=b2c3d4e5f6a789012345678 --file=theme-configOutput: var/export/[filename].gz
dmf:theme:import
Imports a theme configuration into an existing theme.
bin/console dmf:theme:import --id=<theme-id> --file=<filepath>| Option | Required | Description |
|---|---|---|
--id | Yes | UUID of target theme |
--file | Yes | Path to export file (.gz) |
Example:
bin/console dmf:theme:import --id=c3d4e5f6a7b89012345678 --file=var/export/theme-config.gzFinding UUIDs
CMS Page UUID
# List all CMS pages
bin/console dbal:run-sql "SELECT HEX(id), name FROM cms_page"Or in Admin under Content → Shopping Experiences → open page → UUID in URL.
Theme UUID
# List all themes
bin/console dbal:run-sql "SELECT HEX(id), technical_name FROM theme"Or in Admin under Sales Channels → [Sales Channel] → Theme → UUID in URL.
CI/CD Examples
GitLab CI Pipeline
stages:
- export
- deploy
export-content:
stage: export
script:
- bin/console dmf:cms:export --id=$HOMEPAGE_ID --file=homepage
- bin/console dmf:theme:export --id=$THEME_ID --file=theme
artifacts:
paths:
- var/export/
expire_in: 1 week
deploy-staging:
stage: deploy
script:
- scp var/export/*.gz staging:/var/www/shop/var/import/
- ssh staging "cd /var/www/shop && bin/console dmf:cms:import --file=var/import/homepage.gz"
- ssh staging "cd /var/www/shop && bin/console dmf:theme:import --id=$STAGING_THEME_ID --file=var/import/theme.gz"
- ssh staging "cd /var/www/shop && bin/console cache:clear"Local Deployment Workflow
# 1. On source system: Export
bin/console dmf:cms:export --id=abc123 --file=homepage
bin/console dmf:theme:export --id=def456 --file=theme
# 2. Transfer files
scp var/export/*.gz user@target:/var/www/shop/var/import/
# 3. On target system: Import
bin/console dmf:cms:import --file=var/import/homepage.gz
bin/console dmf:theme:import --id=xyz789 --file=var/import/theme.gz
bin/console cache:clear
bin/console theme:compile