diff --git a/README.md b/README.md index 95c1fec..d9df417 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/frameworks/drupal/10.yaml b/frameworks/drupal/10.yaml index 8a2e5c6..88a00d2 100644 --- a/frameworks/drupal/10.yaml +++ b/frameworks/drupal/10.yaml @@ -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. @@ -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 diff --git a/frameworks/drupal/11.yaml b/frameworks/drupal/11.yaml index 32934a5..97a8ae5 100644 --- a/frameworks/drupal/11.yaml +++ b/frameworks/drupal/11.yaml @@ -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. @@ -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 diff --git a/frameworks/drupal/8.yaml b/frameworks/drupal/8.yaml index 6d0ad2d..d3733e3 100644 --- a/frameworks/drupal/8.yaml +++ b/frameworks/drupal/8.yaml @@ -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 diff --git a/frameworks/drupal/9.yaml b/frameworks/drupal/9.yaml index 98403a3..67a1451 100644 --- a/frameworks/drupal/9.yaml +++ b/frameworks/drupal/9.yaml @@ -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. @@ -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 diff --git a/frameworks/index.json b/frameworks/index.json index 3f921fc..0b7d595 100644 --- a/frameworks/index.json +++ b/frameworks/index.json @@ -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"} ] } diff --git a/frameworks/symfony/4.yaml b/frameworks/symfony/4.yaml index ea068a0..d310fa3 100644 --- a/frameworks/symfony/4.yaml +++ b/frameworks/symfony/4.yaml @@ -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. diff --git a/frameworks/symfony/5.yaml b/frameworks/symfony/5.yaml index dc632d7..e3036df 100644 --- a/frameworks/symfony/5.yaml +++ b/frameworks/symfony/5.yaml @@ -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. diff --git a/frameworks/symfony/6.yaml b/frameworks/symfony/6.yaml index 4946c08..0ea77c5 100644 --- a/frameworks/symfony/6.yaml +++ b/frameworks/symfony/6.yaml @@ -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. diff --git a/frameworks/symfony/7.yaml b/frameworks/symfony/7.yaml index 54a9817..21ce29c 100644 --- a/frameworks/symfony/7.yaml +++ b/frameworks/symfony/7.yaml @@ -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. diff --git a/frameworks/symfony/8.yaml b/frameworks/symfony/8.yaml index fc64f83..26af970 100644 --- a/frameworks/symfony/8.yaml +++ b/frameworks/symfony/8.yaml @@ -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. diff --git a/frameworks/typo3/10.yaml b/frameworks/typo3/10.yaml index bc9098c..d023b59 100644 --- a/frameworks/typo3/10.yaml +++ b/frameworks/typo3/10.yaml @@ -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 diff --git a/frameworks/typo3/11.yaml b/frameworks/typo3/11.yaml index 205e4e0..100bdf0 100644 --- a/frameworks/typo3/11.yaml +++ b/frameworks/typo3/11.yaml @@ -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 diff --git a/frameworks/typo3/12.yaml b/frameworks/typo3/12.yaml index 7683ea2..5cb708f 100644 --- a/frameworks/typo3/12.yaml +++ b/frameworks/typo3/12.yaml @@ -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 diff --git a/frameworks/typo3/13.yaml b/frameworks/typo3/13.yaml index 2fc2813..98a492f 100644 --- a/frameworks/typo3/13.yaml +++ b/frameworks/typo3/13.yaml @@ -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 diff --git a/frameworks/typo3/14.yaml b/frameworks/typo3/14.yaml index 9d22aae..66f26d7 100644 --- a/frameworks/typo3/14.yaml +++ b/frameworks/typo3/14.yaml @@ -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 diff --git a/packages/apache-solr-for-typo3-solr.yaml b/packages/apache-solr-for-typo3-solr.yaml new file mode 100644 index 0000000..ded5f0b --- /dev/null +++ b/packages/apache-solr-for-typo3-solr.yaml @@ -0,0 +1,8 @@ +package: apache-solr-for-typo3/solr +frameworks: + - name: typo3 + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: solr + reason: Search backend for EXT:solr diff --git a/packages/doctrine-mongodb-odm-bundle.yaml b/packages/doctrine-mongodb-odm-bundle.yaml new file mode 100644 index 0000000..0cca8d0 --- /dev/null +++ b/packages/doctrine-mongodb-odm-bundle.yaml @@ -0,0 +1,8 @@ +package: doctrine/mongodb-odm-bundle +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: mongo + reason: MongoDB for Doctrine ODM diff --git a/packages/drupal-elasticsearch_connector.yaml b/packages/drupal-elasticsearch_connector.yaml new file mode 100644 index 0000000..0d34179 --- /dev/null +++ b/packages/drupal-elasticsearch_connector.yaml @@ -0,0 +1,11 @@ +package: drupal/elasticsearch_connector +frameworks: + - name: drupal + +# Alternatives, most important first: lerd puts forward the first one this +# machine already runs, else the first, and none when the project uses one. +suggest_services: + - name: elasticsearch + reason: Search API backend for this connector + - name: opensearch + reason: OpenSearch as the connector's backend diff --git a/packages/drupal-memcache.yaml b/packages/drupal-memcache.yaml new file mode 100644 index 0000000..43c9de3 --- /dev/null +++ b/packages/drupal-memcache.yaml @@ -0,0 +1,8 @@ +package: drupal/memcache +frameworks: + - name: drupal + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: memcached + reason: Cache backend for the Memcache module diff --git a/packages/drupal-redis.yaml b/packages/drupal-redis.yaml new file mode 100644 index 0000000..17b0933 --- /dev/null +++ b/packages/drupal-redis.yaml @@ -0,0 +1,11 @@ +package: drupal/redis +frameworks: + - name: drupal + +# Alternatives, most important first: lerd puts forward the first one this +# machine already runs, else the first, and none when the project uses one. +suggest_services: + - name: redis + reason: Cache backend for the Redis module + - name: valkey + reason: Redis-compatible cache backend diff --git a/packages/drupal-search_api_opensearch.yaml b/packages/drupal-search_api_opensearch.yaml new file mode 100644 index 0000000..e939881 --- /dev/null +++ b/packages/drupal-search_api_opensearch.yaml @@ -0,0 +1,8 @@ +package: drupal/search_api_opensearch +frameworks: + - name: drupal + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: opensearch + reason: Search API backend for this module diff --git a/packages/drupal-search_api_solr.yaml b/packages/drupal-search_api_solr.yaml new file mode 100644 index 0000000..6711951 --- /dev/null +++ b/packages/drupal-search_api_solr.yaml @@ -0,0 +1,10 @@ +package: drupal/search_api_solr +# Search API Solr 4 supports Solr 9, the major lerd's preset runs, from Drupal 9. +frameworks: + - name: drupal + min: "9" + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: solr + reason: Search API backend for this module diff --git a/packages/drush-drush.yaml b/packages/drush-drush.yaml index d14a19f..6535b73 100644 --- a/packages/drush-drush.yaml +++ b/packages/drush-drush.yaml @@ -13,15 +13,17 @@ workers: commands: - 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. + # The same script as the Drupal definitions' install block: until the + # installer has run, the connection lives only in .env, as DB_* from older + # releases and as the settings.php array keys from newer ones. 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" + 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 description: Install a fresh site against the database lerd provisioned, admin user admin/lerdadmin1 output: text diff --git a/packages/elasticsearch-elasticsearch.yaml b/packages/elasticsearch-elasticsearch.yaml new file mode 100644 index 0000000..d724a16 --- /dev/null +++ b/packages/elasticsearch-elasticsearch.yaml @@ -0,0 +1,6 @@ +package: elasticsearch/elasticsearch + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: elasticsearch + reason: Local Elasticsearch for this client diff --git a/packages/friendsofsymfony-elastica-bundle.yaml b/packages/friendsofsymfony-elastica-bundle.yaml new file mode 100644 index 0000000..b1164a6 --- /dev/null +++ b/packages/friendsofsymfony-elastica-bundle.yaml @@ -0,0 +1,8 @@ +package: friendsofsymfony/elastica-bundle +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: elasticsearch + reason: Elasticsearch for FOSElasticaBundle diff --git a/packages/gotenberg-gotenberg-php.yaml b/packages/gotenberg-gotenberg-php.yaml new file mode 100644 index 0000000..f563c56 --- /dev/null +++ b/packages/gotenberg-gotenberg-php.yaml @@ -0,0 +1,6 @@ +package: gotenberg/gotenberg-php + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: gotenberg + reason: Renders PDFs locally for this client diff --git a/packages/laravel-cashier.yaml b/packages/laravel-cashier.yaml new file mode 100644 index 0000000..095bdc6 --- /dev/null +++ b/packages/laravel-cashier.yaml @@ -0,0 +1,8 @@ +package: laravel/cashier +frameworks: + - name: laravel + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: stripe-mock + reason: Test Cashier billing without reaching Stripe diff --git a/packages/laravel-dusk.yaml b/packages/laravel-dusk.yaml new file mode 100644 index 0000000..82f52d4 --- /dev/null +++ b/packages/laravel-dusk.yaml @@ -0,0 +1,8 @@ +package: laravel/dusk +frameworks: + - name: laravel + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: selenium + reason: The browser Dusk tests drive diff --git a/packages/laravel-horizon.yaml b/packages/laravel-horizon.yaml index 4a7579f..6b0a3ab 100644 --- a/packages/laravel-horizon.yaml +++ b/packages/laravel-horizon.yaml @@ -13,3 +13,11 @@ workers: restart: always conflicts_with: - queue + +# Alternatives, most important first: lerd puts forward the first one this +# machine already runs, else the first, and none when the project uses one. +suggest_services: + - name: redis + reason: Horizon runs its queues on Redis + - name: valkey + reason: Redis-compatible queues for Horizon diff --git a/packages/league-flysystem-aws-s3-v3.yaml b/packages/league-flysystem-aws-s3-v3.yaml new file mode 100644 index 0000000..74724e7 --- /dev/null +++ b/packages/league-flysystem-aws-s3-v3.yaml @@ -0,0 +1,9 @@ +package: league/flysystem-aws-s3-v3 + +# Alternatives, most important first: lerd puts forward the first one this +# machine already runs, else the first, and none when the project uses one. +suggest_services: + - name: rustfs + reason: S3-compatible storage without a real bucket + - name: localstack + reason: Local AWS, S3 included diff --git a/packages/meilisearch-meilisearch-php.yaml b/packages/meilisearch-meilisearch-php.yaml new file mode 100644 index 0000000..109aaa6 --- /dev/null +++ b/packages/meilisearch-meilisearch-php.yaml @@ -0,0 +1,6 @@ +package: meilisearch/meilisearch-php + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: meilisearch + reason: Local Meilisearch for this client diff --git a/packages/meilisearch-search-bundle.yaml b/packages/meilisearch-search-bundle.yaml new file mode 100644 index 0000000..13fe841 --- /dev/null +++ b/packages/meilisearch-search-bundle.yaml @@ -0,0 +1,8 @@ +package: meilisearch/search-bundle +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: meilisearch + reason: Meilisearch for this bundle diff --git a/packages/mongodb-laravel-mongodb.yaml b/packages/mongodb-laravel-mongodb.yaml new file mode 100644 index 0000000..ee2059e --- /dev/null +++ b/packages/mongodb-laravel-mongodb.yaml @@ -0,0 +1,8 @@ +package: mongodb/laravel-mongodb +frameworks: + - name: laravel + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: mongo + reason: MongoDB for Eloquent models diff --git a/packages/mongodb-mongodb.yaml b/packages/mongodb-mongodb.yaml new file mode 100644 index 0000000..f4f92b1 --- /dev/null +++ b/packages/mongodb-mongodb.yaml @@ -0,0 +1,6 @@ +package: mongodb/mongodb + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: mongo + reason: Local MongoDB for this driver diff --git a/packages/opensearch-project-opensearch-php.yaml b/packages/opensearch-project-opensearch-php.yaml new file mode 100644 index 0000000..9d9185f --- /dev/null +++ b/packages/opensearch-project-opensearch-php.yaml @@ -0,0 +1,6 @@ +package: opensearch-project/opensearch-php + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: opensearch + reason: Local OpenSearch for this client diff --git a/packages/pda-pheanstalk.yaml b/packages/pda-pheanstalk.yaml new file mode 100644 index 0000000..193466d --- /dev/null +++ b/packages/pda-pheanstalk.yaml @@ -0,0 +1,6 @@ +package: pda/pheanstalk + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: beanstalkd + reason: Local Beanstalkd queue for this client diff --git a/packages/php-amqplib-php-amqplib.yaml b/packages/php-amqplib-php-amqplib.yaml new file mode 100644 index 0000000..b9f4429 --- /dev/null +++ b/packages/php-amqplib-php-amqplib.yaml @@ -0,0 +1,6 @@ +package: php-amqplib/php-amqplib + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: rabbitmq + reason: Local RabbitMQ broker for this client diff --git a/packages/predis-predis.yaml b/packages/predis-predis.yaml new file mode 100644 index 0000000..f67d3ff --- /dev/null +++ b/packages/predis-predis.yaml @@ -0,0 +1,9 @@ +package: predis/predis + +# Alternatives, most important first: lerd puts forward the first one this +# machine already runs, else the first, and none when the project uses one. +suggest_services: + - name: redis + reason: Redis server for predis to connect to + - name: valkey + reason: Redis-compatible server for predis diff --git a/packages/pusher-pusher-php-server.yaml b/packages/pusher-pusher-php-server.yaml new file mode 100644 index 0000000..5776939 --- /dev/null +++ b/packages/pusher-pusher-php-server.yaml @@ -0,0 +1,6 @@ +package: pusher/pusher-php-server + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: soketi + reason: Pusher-compatible websockets without Pusher diff --git a/packages/sensiolabs-gotenberg-bundle.yaml b/packages/sensiolabs-gotenberg-bundle.yaml new file mode 100644 index 0000000..7abf1e8 --- /dev/null +++ b/packages/sensiolabs-gotenberg-bundle.yaml @@ -0,0 +1,8 @@ +package: sensiolabs/gotenberg-bundle +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: gotenberg + reason: Renders PDFs locally for this bundle diff --git a/packages/smi2-phpclickhouse.yaml b/packages/smi2-phpclickhouse.yaml new file mode 100644 index 0000000..a1603d6 --- /dev/null +++ b/packages/smi2-phpclickhouse.yaml @@ -0,0 +1,6 @@ +package: smi2/phpclickhouse + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: clickhouse + reason: Local ClickHouse for this client diff --git a/packages/stripe-stripe-php.yaml b/packages/stripe-stripe-php.yaml new file mode 100644 index 0000000..d693554 --- /dev/null +++ b/packages/stripe-stripe-php.yaml @@ -0,0 +1,6 @@ +package: stripe/stripe-php + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: stripe-mock + reason: Test Stripe calls without reaching Stripe diff --git a/packages/symfony-amqp-messenger.yaml b/packages/symfony-amqp-messenger.yaml new file mode 100644 index 0000000..dbea009 --- /dev/null +++ b/packages/symfony-amqp-messenger.yaml @@ -0,0 +1,8 @@ +package: symfony/amqp-messenger +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: rabbitmq + reason: RabbitMQ for this Messenger transport diff --git a/packages/symfony-beanstalkd-messenger.yaml b/packages/symfony-beanstalkd-messenger.yaml new file mode 100644 index 0000000..bde22b8 --- /dev/null +++ b/packages/symfony-beanstalkd-messenger.yaml @@ -0,0 +1,8 @@ +package: symfony/beanstalkd-messenger +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: beanstalkd + reason: Beanstalkd for this Messenger transport diff --git a/packages/symfony-mercure-bundle.yaml b/packages/symfony-mercure-bundle.yaml new file mode 100644 index 0000000..95e2935 --- /dev/null +++ b/packages/symfony-mercure-bundle.yaml @@ -0,0 +1,8 @@ +package: symfony/mercure-bundle +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: mercure + reason: The hub the Mercure bundle publishes to diff --git a/packages/symfony-panther.yaml b/packages/symfony-panther.yaml new file mode 100644 index 0000000..c0d6c21 --- /dev/null +++ b/packages/symfony-panther.yaml @@ -0,0 +1,8 @@ +package: symfony/panther +frameworks: + - name: symfony + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: selenium + reason: The browser Panther tests drive diff --git a/packages/symfony-redis-messenger.yaml b/packages/symfony-redis-messenger.yaml new file mode 100644 index 0000000..0edfbd7 --- /dev/null +++ b/packages/symfony-redis-messenger.yaml @@ -0,0 +1,11 @@ +package: symfony/redis-messenger +frameworks: + - name: symfony + +# Alternatives, most important first: lerd puts forward the first one this +# machine already runs, else the first, and none when the project uses one. +suggest_services: + - name: redis + reason: Redis for this Messenger transport + - name: valkey + reason: Redis-compatible Messenger transport diff --git a/packages/typesense-typesense-php.yaml b/packages/typesense-typesense-php.yaml new file mode 100644 index 0000000..a5dcf7e --- /dev/null +++ b/packages/typesense-typesense-php.yaml @@ -0,0 +1,6 @@ +package: typesense/typesense-php + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: typesense + reason: Local Typesense for this client diff --git a/packages/vladimir-yuldashev-laravel-queue-rabbitmq.yaml b/packages/vladimir-yuldashev-laravel-queue-rabbitmq.yaml new file mode 100644 index 0000000..5cdad63 --- /dev/null +++ b/packages/vladimir-yuldashev-laravel-queue-rabbitmq.yaml @@ -0,0 +1,8 @@ +package: vladimir-yuldashev/laravel-queue-rabbitmq +frameworks: + - name: laravel + +# The project talks to this service through the package, so the wizard ticks it. +suggest_services: + - name: rabbitmq + reason: RabbitMQ for this queue driver