Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 33 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,28 +55,60 @@ definition your project resolved when its `composer.json` requires the package.

| Package | What it adds | Applies to |
|---------|--------------|------------|
| `apache-solr-for-typo3/solr` | suggests the `solr` service, ticked | TYPO3 |
| `cakephp/migrations` | `migrate` command | CakePHP 3+ |
| `cakephp/queue` | `queue` worker | CakePHP 5+ |
| `codeigniter4/queue` | `queue` worker, `queue:retry`, `queue:failed`, `queue:flush` commands | CodeIgniter 4+ |
| `doctrine/doctrine-fixtures-bundle` | `doctrine:fixtures:load` command, 1 setup step | Symfony 4+ |
| `doctrine/doctrine-migrations-bundle` | `doctrine:migrations:migrate` command, 1 setup step | Symfony 4+ |
| `doctrine/mongodb-odm-bundle` | suggests the `mongo` service, ticked | Symfony |
| `drupal/elasticsearch_connector` | suggests `elasticsearch`, or `opensearch` when that is what runs | Drupal |
| `drupal/memcache` | suggests the `memcached` service, ticked | Drupal |
| `drupal/redis` | suggests `redis`, or `valkey` when that is what runs | Drupal |
| `drupal/search_api_opensearch` | suggests the `opensearch` service, ticked | Drupal |
| `drupal/search_api_solr` | suggests the `solr` service, ticked | Drupal 9+ |
| `drush/drush` | `cron` worker, `site:install`, `cr`, `uli`, `updb`, `cex`, `cim` commands, 3 setup steps | Drupal 8+ |
| `elasticsearch/elasticsearch` | suggests the `elasticsearch` service, ticked | any framework |
| `friendsofsymfony/elastica-bundle` | suggests the `elasticsearch` service, ticked | Symfony |
| `gotenberg/gotenberg-php` | suggests the `gotenberg` service, ticked | any framework |
| `helhum/typo3-console` | `setup` command | TYPO3 10-11 |
| `inspector-apm/inspector-php` | reported faults shown in the Debug window | any framework |
| `laravel/cashier` | suggests the `stripe-mock` service, ticked | Laravel |
| `laravel/cloud-cli` | `cloud` runs on the host PHP | any framework |
| `laravel/horizon` | `horizon` worker | Laravel 6+ |
| `laravel/dusk` | suggests the `selenium` service, ticked | Laravel |
| `laravel/horizon` | `horizon` worker, suggests `redis`, or `valkey` when that is what runs | Laravel 6+ |
| `laravel/reverb` | `reverb` worker | Laravel 11+ |
| `league/flysystem-aws-s3-v3` | suggests `rustfs`, or `localstack` when that is what runs | any framework |
| `meilisearch/meilisearch-php` | suggests the `meilisearch` service, ticked | any framework |
| `meilisearch/search-bundle` | suggests the `meilisearch` service, ticked | Symfony |
| `mongodb/laravel-mongodb` | suggests the `mongo` service, ticked | Laravel |
| `mongodb/mongodb` | suggests the `mongo` service, ticked | any framework |
| `monolog/monolog` | log records captured into the Debug window | any framework |
| `nativephp/electron` | `native` worker, `native:install`, `native:build` commands, 1 doctor check | Laravel 11+ |
| `nativephp/mobile` | `native:install-mobile`, `native:jump`, `native:run`, `native:open` commands, 3 doctor checks | Laravel 11+ |
| `opensearch-project/opensearch-php` | suggests the `opensearch` service, ticked | any framework |
| `pda/pheanstalk` | suggests the `beanstalkd` service, ticked | any framework |
| `php-amqplib/php-amqplib` | suggests the `rabbitmq` service, ticked | any framework |
| `predis/predis` | suggests `redis`, or `valkey` when that is what runs | any framework |
| `pusher/pusher-php-server` | suggests the `soketi` service, ticked | any framework |
| `sensiolabs/gotenberg-bundle` | suggests the `gotenberg` service, ticked | Symfony |
| `sentry/sentry` | captured exceptions and messages shown in the Debug window | any framework |
| `smi2/phpclickhouse` | suggests the `clickhouse` service, ticked | any framework |
| `spatie/ray` | `ray()` calls captured into the Debug window | any framework |
| `stripe/stripe-php` | suggests the `stripe-mock` service, ticked | any framework |
| `symfony/amqp-messenger` | suggests the `rabbitmq` service, ticked | Symfony |
| `symfony/beanstalkd-messenger` | suggests the `beanstalkd` service, ticked | Symfony |
| `symfony/mercure-bundle` | suggests the `mercure` service, ticked | Symfony |
| `symfony/messenger` | `messenger` worker | Symfony 4+ |
| `symfony/notifier` | SMS, chat and push shown in the Debug window | any framework |
| `symfony/panther` | suggests the `selenium` service, ticked | Symfony |
| `symfony/redis-messenger` | suggests `redis`, or `valkey` when that is what runs | Symfony |
| `symfony/scheduler` | `scheduler` worker | Symfony 8+ |
| `tempest/command-bus` | `command_bus` worker | Tempest 3+ |
| `tempest/database` | 1 setup step | Tempest 3+ |
| `typesense/typesense-php` | suggests the `typesense` service, ticked | any framework |
| `typo3/cms-scheduler` | `scheduler` worker, `scheduler` command | TYPO3 10+ |
| `vladimir-yuldashev/laravel-queue-rabbitmq` | suggests the `rabbitmq` service, ticked | Laravel |

Missing one you use? [Add it](#package-definitions) — a package file is a dozen
lines, and it reaches every install within 24 hours like anything else here.
Expand Down
33 changes: 23 additions & 10 deletions frameworks/drupal/10.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ env:
- databases.default.default.autoload=core/modules/pgsql/src/Driver/Database/pgsql/
composer: auto
npm: false
# Offered unticked in the setup wizard; the search_api_solr package ticks it.
suggest_services:
- name: solr
reason: Search API's usual search backend
console: vendor/drush/drush/drush.php
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down Expand Up @@ -100,22 +104,31 @@ tinker:
requires_package: drush/drush
requires_file: vendor/drush/drush/drush.php

# The recommended project ships without drush, and until the installer has run
# the connection lerd picked lives only in .env: DB_* from older releases, the
# settings.php array keys from newer ones. {{…}} placeholders are not used,
# since a release before v1.29 would take them literally.
install:
label: Install Drupal
# Both installers write settings.php, and nothing else does before them.
missing_file: web/sites/default/settings.php
command: &site-install >
test -f vendor/drush/drush/drush.php || composer require drush/drush --no-interaction || exit 1;
v() { sed -n -e "s/^DB_$1=//p" -e "s/^databases\.default\.default\.$2=//p" .env 2>/dev/null | tail -n 1; };
driver=$(v DRIVER driver);
test -n "$driver" || { echo "no database connection in .env, run lerd env first" >&2; exit 1; };
if [ "$driver" = sqlite ]; then url="sqlite://$(v NAME database)";
else url="$driver://$(v USER username):$(v PASSWORD password)@$(v HOST host):$(v PORT port)/$(v NAME database)"; fi;
php vendor/drush/drush/drush.php site:install --yes --db-url="$url"
--account-name=admin --account-pass=lerdadmin1

commands:
# site:install drops and recreates the schema, and `lerd setup --all` runs
# every setup step regardless of `default`, so this is a confirm-gated
# command rather than a setup step.
- name: site:install
label: Install site
# The connection is read out of the .env lerd wrote rather than templated
# in: {{…}} placeholders are only expanded from lerd v1.29, and an older
# install would take them literally and install a whole site into a
# database named "{{site}}". Sourcing .env also picks up whichever engine
# the project uses, since DB_DRIVER already holds drush's scheme name.
command: >
set -a; . ./.env; set +a;
php vendor/drush/drush/drush.php site:install --yes
--db-url="$DB_DRIVER://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME"
--account-name=admin --account-pass=lerdadmin1
command: *site-install
description: Install a fresh site against the database lerd provisioned, admin user admin/lerdadmin1
output: text
confirm: true
Expand Down
33 changes: 23 additions & 10 deletions frameworks/drupal/11.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ env:
- databases.default.default.autoload=core/modules/pgsql/src/Driver/Database/pgsql/
composer: auto
npm: false
# Offered unticked in the setup wizard; the search_api_solr package ticks it.
suggest_services:
- name: solr
reason: Search API's usual search backend
console: vendor/drush/drush/drush.php
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down Expand Up @@ -100,22 +104,31 @@ tinker:
requires_package: drush/drush
requires_file: vendor/drush/drush/drush.php

# The recommended project ships without drush, and until the installer has run
# the connection lerd picked lives only in .env: DB_* from older releases, the
# settings.php array keys from newer ones. {{…}} placeholders are not used,
# since a release before v1.29 would take them literally.
install:
label: Install Drupal
# Both installers write settings.php, and nothing else does before them.
missing_file: web/sites/default/settings.php
command: &site-install >
test -f vendor/drush/drush/drush.php || composer require drush/drush --no-interaction || exit 1;
v() { sed -n -e "s/^DB_$1=//p" -e "s/^databases\.default\.default\.$2=//p" .env 2>/dev/null | tail -n 1; };
driver=$(v DRIVER driver);
test -n "$driver" || { echo "no database connection in .env, run lerd env first" >&2; exit 1; };
if [ "$driver" = sqlite ]; then url="sqlite://$(v NAME database)";
else url="$driver://$(v USER username):$(v PASSWORD password)@$(v HOST host):$(v PORT port)/$(v NAME database)"; fi;
php vendor/drush/drush/drush.php site:install --yes --db-url="$url"
--account-name=admin --account-pass=lerdadmin1

commands:
# site:install drops and recreates the schema, and `lerd setup --all` runs
# every setup step regardless of `default`, so this is a confirm-gated
# command rather than a setup step.
- name: site:install
label: Install site
# The connection is read out of the .env lerd wrote rather than templated
# in: {{…}} placeholders are only expanded from lerd v1.29, and an older
# install would take them literally and install a whole site into a
# database named "{{site}}". Sourcing .env also picks up whichever engine
# the project uses, since DB_DRIVER already holds drush's scheme name.
command: >
set -a; . ./.env; set +a;
php vendor/drush/drush/drush.php site:install --yes
--db-url="$DB_DRIVER://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME"
--account-name=admin --account-pass=lerdadmin1
command: *site-install
description: Install a fresh site against the database lerd provisioned, admin user admin/lerdadmin1
output: text
confirm: true
Expand Down
29 changes: 19 additions & 10 deletions frameworks/drupal/8.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,22 +96,31 @@ tinker:
requires_package: drush/drush
requires_file: vendor/drush/drush/drush.php

# The recommended project ships without drush, and until the installer has run
# the connection lerd picked lives only in .env: DB_* from older releases, the
# settings.php array keys from newer ones. {{…}} placeholders are not used,
# since a release before v1.29 would take them literally.
install:
label: Install Drupal
# Both installers write settings.php, and nothing else does before them.
missing_file: web/sites/default/settings.php
command: &site-install >
test -f vendor/drush/drush/drush.php || composer require drush/drush --no-interaction || exit 1;
v() { sed -n -e "s/^DB_$1=//p" -e "s/^databases\.default\.default\.$2=//p" .env 2>/dev/null | tail -n 1; };
driver=$(v DRIVER driver);
test -n "$driver" || { echo "no database connection in .env, run lerd env first" >&2; exit 1; };
if [ "$driver" = sqlite ]; then url="sqlite://$(v NAME database)";
else url="$driver://$(v USER username):$(v PASSWORD password)@$(v HOST host):$(v PORT port)/$(v NAME database)"; fi;
php vendor/drush/drush/drush.php site:install --yes --db-url="$url"
--account-name=admin --account-pass=lerdadmin1

commands:
# site:install drops and recreates the schema, and `lerd setup --all` runs
# every setup step regardless of `default`, so this is a confirm-gated
# command rather than a setup step.
- name: site:install
label: Install site
# The connection is read out of the .env lerd wrote rather than templated
# in: {{…}} placeholders are only expanded from lerd v1.29, and an older
# install would take them literally and install a whole site into a
# database named "{{site}}". Sourcing .env also picks up whichever engine
# the project uses, since DB_DRIVER already holds drush's scheme name.
command: >
set -a; . ./.env; set +a;
php vendor/drush/drush/drush.php site:install --yes
--db-url="$DB_DRIVER://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME"
--account-name=admin --account-pass=lerdadmin1
command: *site-install
description: Install a fresh site against the database lerd provisioned, admin user admin/lerdadmin1
output: text
confirm: true
Expand Down
33 changes: 23 additions & 10 deletions frameworks/drupal/9.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@ env:
- databases.default.default.password=lerd
composer: auto
npm: false
# Offered unticked in the setup wizard; the search_api_solr package ticks it.
suggest_services:
- name: solr
reason: Search API's usual search backend
console: vendor/drush/drush/drush.php
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down Expand Up @@ -96,22 +100,31 @@ tinker:
requires_package: drush/drush
requires_file: vendor/drush/drush/drush.php

# The recommended project ships without drush, and until the installer has run
# the connection lerd picked lives only in .env: DB_* from older releases, the
# settings.php array keys from newer ones. {{…}} placeholders are not used,
# since a release before v1.29 would take them literally.
install:
label: Install Drupal
# Both installers write settings.php, and nothing else does before them.
missing_file: web/sites/default/settings.php
command: &site-install >
test -f vendor/drush/drush/drush.php || composer require drush/drush --no-interaction || exit 1;
v() { sed -n -e "s/^DB_$1=//p" -e "s/^databases\.default\.default\.$2=//p" .env 2>/dev/null | tail -n 1; };
driver=$(v DRIVER driver);
test -n "$driver" || { echo "no database connection in .env, run lerd env first" >&2; exit 1; };
if [ "$driver" = sqlite ]; then url="sqlite://$(v NAME database)";
else url="$driver://$(v USER username):$(v PASSWORD password)@$(v HOST host):$(v PORT port)/$(v NAME database)"; fi;
php vendor/drush/drush/drush.php site:install --yes --db-url="$url"
--account-name=admin --account-pass=lerdadmin1

commands:
# site:install drops and recreates the schema, and `lerd setup --all` runs
# every setup step regardless of `default`, so this is a confirm-gated
# command rather than a setup step.
- name: site:install
label: Install site
# The connection is read out of the .env lerd wrote rather than templated
# in: {{…}} placeholders are only expanded from lerd v1.29, and an older
# install would take them literally and install a whole site into a
# database named "{{site}}". Sourcing .env also picks up whichever engine
# the project uses, since DB_DRIVER already holds drush's scheme name.
command: >
set -a; . ./.env; set +a;
php vendor/drush/drush/drush.php site:install --yes
--db-url="$DB_DRIVER://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME"
--account-name=admin --account-pass=lerdadmin1
command: *site-install
description: Install a fresh site against the database lerd provisioned, admin user admin/lerdadmin1
output: text
confirm: true
Expand Down
36 changes: 34 additions & 2 deletions frameworks/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -130,29 +130,61 @@
}
],
"packages": [
{"name": "apache-solr-for-typo3/solr"},
{"name": "cakephp/migrations"},
{"name": "cakephp/queue"},
{"name": "codeigniter4/queue"},
{"name": "doctrine/doctrine-fixtures-bundle"},
{"name": "doctrine/doctrine-migrations-bundle"},
{"name": "doctrine/mongodb-odm-bundle"},
{"name": "drupal/elasticsearch_connector"},
{"name": "drupal/memcache"},
{"name": "drupal/redis"},
{"name": "drupal/search_api_opensearch"},
{"name": "drupal/search_api_solr"},
{"name": "drush/drush"},
{"name": "elasticsearch/elasticsearch"},
{"name": "friendsofsymfony/elastica-bundle"},
{"name": "gotenberg/gotenberg-php"},
{"name": "helhum/typo3-console"},
{"name": "inspector-apm/inspector-php"},
{"name": "inertiajs/inertia-laravel"},
{"name": "inspector-apm/inspector-php"},
{"name": "laravel/cashier"},
{"name": "laravel/cloud-cli"},
{"name": "laravel/dusk"},
{"name": "laravel/horizon"},
{"name": "laravel/reverb"},
{"name": "league/flysystem-aws-s3-v3"},
{"name": "meilisearch/meilisearch-php"},
{"name": "meilisearch/search-bundle"},
{"name": "mongodb/laravel-mongodb"},
{"name": "mongodb/mongodb"},
{"name": "monolog/monolog"},
{"name": "nativephp/desktop"},
{"name": "nativephp/electron"},
{"name": "nativephp/mobile"},
{"name": "opensearch-project/opensearch-php"},
{"name": "pda/pheanstalk"},
{"name": "php-amqplib/php-amqplib"},
{"name": "predis/predis"},
{"name": "pusher/pusher-php-server"},
{"name": "sensiolabs/gotenberg-bundle"},
{"name": "sentry/sentry"},
{"name": "smi2/phpclickhouse"},
{"name": "spatie/ray"},
{"name": "stripe/stripe-php"},
{"name": "symfony/amqp-messenger"},
{"name": "symfony/beanstalkd-messenger"},
{"name": "symfony/mercure-bundle"},
{"name": "symfony/messenger"},
{"name": "symfony/notifier"},
{"name": "symfony/panther"},
{"name": "symfony/redis-messenger"},
{"name": "symfony/scheduler"},
{"name": "tempest/command-bus"},
{"name": "tempest/database"},
{"name": "typo3/cms-scheduler"}
{"name": "typesense/typesense-php"},
{"name": "typo3/cms-scheduler"},
{"name": "vladimir-yuldashev/laravel-queue-rabbitmq"}
]
}
4 changes: 4 additions & 0 deletions frameworks/symfony/4.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ env:

composer: auto
npm: auto
# Offered unticked in the setup wizard; symfony/mercure-bundle ticks it.
suggest_services:
- name: mercure
reason: Realtime updates pushed over server-sent events
console: bin/console
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down
4 changes: 4 additions & 0 deletions frameworks/symfony/5.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ env:

composer: auto
npm: auto
# Offered unticked in the setup wizard; symfony/mercure-bundle ticks it.
suggest_services:
- name: mercure
reason: Realtime updates pushed over server-sent events
console: bin/console
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down
4 changes: 4 additions & 0 deletions frameworks/symfony/6.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ env:

composer: auto
npm: auto
# Offered unticked in the setup wizard; symfony/mercure-bundle ticks it.
suggest_services:
- name: mercure
reason: Realtime updates pushed over server-sent events
console: bin/console
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down
4 changes: 4 additions & 0 deletions frameworks/symfony/7.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ env:

composer: auto
npm: auto
# Offered unticked in the setup wizard; symfony/mercure-bundle ticks it.
suggest_services:
- name: mercure
reason: Realtime updates pushed over server-sent events
console: bin/console
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down
4 changes: 4 additions & 0 deletions frameworks/symfony/8.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ env:

composer: auto
npm: auto
# Offered unticked in the setup wizard; symfony/mercure-bundle ticks it.
suggest_services:
- name: mercure
reason: Realtime updates pushed over server-sent events
console: bin/console
# Run after a connection change: the compiled container is built
# against the old database and answers every request with an error.
Expand Down
4 changes: 4 additions & 0 deletions frameworks/typo3/10.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ env:

composer: auto
npm: false
# Offered unticked in the setup wizard; apache-solr-for-typo3/solr ticks it.
suggest_services:
- name: solr
reason: Search backend for EXT:solr
console: vendor/bin/typo3
cache_command: cache:flush

Expand Down
Loading
Loading