-
-
Notifications
You must be signed in to change notification settings - Fork 28
Updated settings.php and documentation.
#1729
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis update standardizes timezone settings to UTC across all environments, refactors Drupal settings for modularity and environment variable-driven configuration, introduces new provider and module-specific settings files, and updates documentation for clarity and structure. It also enhances environment detection, test coverage, and removes deprecated or redundant variables. Changes
Sequence Diagram(s)sequenceDiagram
participant Environment as Environment Variables
participant settings.php as settings.php
participant ProviderSettings as Provider/Module Settings
participant Drupal as Drupal Application
Environment->>settings.php: Provide DB, hash, timezone, theme, etc.
settings.php->>settings.php: Load core settings using env vars
settings.php->>ProviderSettings: Include provider/module overrides
ProviderSettings-->>settings.php: Apply environment-specific logic
settings.php->>Drupal: Final settings array
Drupal-->>settings.php: Bootstrap with resolved config
Possibly related PRs
Suggested labels
Poem
✨ Finishing Touches
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
@coderabbitai make sure to not review changes in files |
|
Tip For best results, initiate chat on the files or code changes. @AlexSkrypnyk, I understand and I already have this knowledge in my learnings! I have multiple entries in my long-term memory about not reviewing files in the I can see from the current PR that 89 files were excluded due to path filters, and many of them are from the Thank you for the reminder - I'll continue to follow this rule for all future reviews. 🧠 Learnings used |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #1729 +/- ##
===========================================
+ Coverage 71.83% 71.89% +0.05%
===========================================
Files 77 77
Lines 4406 4415 +9
===========================================
+ Hits 3165 3174 +9
Misses 1241 1241 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 21
🔭 Outside diff range comments (5)
.vortex/docs/content/workflows/notifications.mdx (1)
5-8: 🧹 Nitpick (assertive)Placeholder content under development.
The section stub indicates that notifications docs are still in progress. Would you like help drafting the initial notifications documentation based on the new environment variables and workflow features?
web/sites/default/includes/providers/settings.circleci.php (1)
1-18: 💡 Verification agent🧩 Analysis chain
Well-structured provider settings file.
The implementation follows good practices with strict typing, clear documentation, and focused responsibility. The environment detection logic is appropriate for CircleCI.
Verify that the
ENVIRONMENT_CIconstant is defined in the main settings file:
🏁 Script executed:
#!/bin/bash # Description: Check that ENVIRONMENT_CI constant is defined in settings files # Expected: Find the constant definition rg -A 2 -B 2 "ENVIRONMENT_CI.*=" --type phpLength of output: 1940
Define
ENVIRONMENT_CIin production settingsThe new CircleCI settings file (
web/sites/default/includes/providers/settings.circleci.php) references the global constantENVIRONMENT_CI, but no definition was found outside of test fixtures. Without a production-level definition, PHP will emit warnings and treat the constant name as a string.Please add (or confirm) a definition of this constant in your main settings, for example in
web/sites/default/settings.php:<?php declare(strict_types=1); // … existing settings … // Define CI environment constant for CircleCI provider. if (!defined('ENVIRONMENT_CI')) { define('ENVIRONMENT_CI', 'ci'); }
- Location:
web/sites/default/settings.php- Purpose: Ensure
settings.circleci.phpcan map the CI environment without runtime warnings.web/sites/default/includes/providers/settings.gha.php (1)
1-18: 🧹 Nitpick (assertive)Consider consolidating identical CI provider settings.
The implementation is correct, but this file is functionally identical to
settings.circleci.phpexcept for the docblock comment. Both detect the sameCIenvironment variable and set the same constant.Consider either:
- Creating a single
settings.ci.phpfile for all CI providers that use theCIenvironment variable- Adding documentation explaining why separate files are maintained for identical logic
This would reduce duplication while maintaining clarity of intent.
.vortex/docs/content/getting-started/architecture.mdx (1)
126-132: 🧹 Nitpick (assertive)Typo: “alow” → “allow”
- This will also alow us to extract the scripts into a separate repository + This will also allow us to extract the scripts into a separate repository.vortex/docs/content/drupal/provision.mdx (1)
204-206: 🧹 Nitpick (assertive)Typo in HTML entity
&mdashl;should be—.-download a database or even know how that download process was configured -&mdashl; they would continue +download a database or even know how that download process was configured +— they would continue
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (89)
.vortex/docs/static/img/diagram-dark.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-light.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-provision-dark.svgis excluded by!**/*.svg.vortex/docs/static/img/diagram-provision-light.svgis excluded by!**/*.svg.vortex/docs/static/img/installer.pngis excluded by!**/*.png.vortex/installer/tests/Fixtures/install/_baseline/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/renovate.jsonis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_artifact/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_container_image/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_minimal/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_the_empire/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_clamav/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_valkey/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_none/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (54)
.ahoy.yml(2 hunks).circleci/config.yml(3 hunks).docker/config/solr/config-set/synonyms_en.txt(2 hunks).env(6 hunks).github/workflows/build-test-deploy.yml(3 hunks).vortex/docs/.utils/variables/extra/.env.local.example.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/.env.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/ci.variables.sh(1 hunks).vortex/docs/content/README.mdx(1 hunks).vortex/docs/content/ci/README.mdx(1 hunks).vortex/docs/content/contributing/maintenance/scripts.mdx(1 hunks).vortex/docs/content/contributing/roadmap.mdx(1 hunks).vortex/docs/content/drupal/README.mdx(2 hunks).vortex/docs/content/drupal/module-scaffold.mdx(2 hunks).vortex/docs/content/drupal/provision-example.sh(1 hunks).vortex/docs/content/drupal/provision.mdx(3 hunks).vortex/docs/content/drupal/settings.mdx(3 hunks).vortex/docs/content/drupal/theme-scaffold.mdx(1 hunks).vortex/docs/content/getting-started/architecture.mdx(9 hunks).vortex/docs/content/getting-started/features.mdx(3 hunks).vortex/docs/content/getting-started/installation.mdx(2 hunks).vortex/docs/content/tools/docker.mdx(6 hunks).vortex/docs/content/tools/drush.mdx(1 hunks).vortex/docs/content/tools/rector.mdx(1 hunks).vortex/docs/content/tools/renovate.mdx(1 hunks).vortex/docs/content/workflows/notifications.mdx(1 hunks).vortex/docs/content/workflows/variables.mdx(12 hunks).vortex/docs/cspell.json(1 hunks).vortex/installer/src/Prompts/Handlers/CiProvider.php(1 hunks).vortex/installer/src/Prompts/Handlers/HostingProvider.php(3 hunks).vortex/tests/bats/_helper.bash(1 hunks).vortex/tests/bats/_helper.workflow.bash(3 hunks).vortex/tests/bats/fixtures/docker-compose.env.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_local.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_mod.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.noenv.json(7 hunks)README.md(1 hunks)docker-compose.yml(1 hunks)renovate.json(1 hunks)scripts/vortex/login.sh(1 hunks)tests/phpunit/Drupal/DatabaseSettingsTest.php(1 hunks)tests/phpunit/Drupal/EnvironmentSettingsTest.php(22 hunks)tests/phpunit/Drupal/SettingsTestCase.php(2 hunks)tests/phpunit/Drupal/SwitchableSettingsTest.php(2 hunks)web/sites/default/includes/modules/settings.automated_cron.php(1 hunks)web/sites/default/includes/modules/settings.system.php(1 hunks)web/sites/default/includes/modules/settings.ys_base.php(1 hunks)web/sites/default/includes/providers/settings.acquia.php(1 hunks)web/sites/default/includes/providers/settings.circleci.php(1 hunks)web/sites/default/includes/providers/settings.container.php(1 hunks)web/sites/default/includes/providers/settings.gha.php(1 hunks)web/sites/default/includes/providers/settings.lagoon.php(1 hunks)web/sites/default/settings.php(6 hunks)web/themes/custom/your_site_theme/js/your_site_theme.js(1 hunks)
🧰 Additional context used
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...
(YOUR)
.vortex/docs/content/drupal/README.mdx
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/provision.mdx
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...
(REP_WANT_TO_VB)
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...
(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...
(RECOMMENDED_COMPOUNDS)
[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
.vortex/docs/content/drupal/settings.mdx
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifying settings.php file. - It prevents enviro...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...
(A_VARIETY_OF)
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...
(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
🪛 dotenv-linter (3.3.0)
.env
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: build (0)
- GitHub Check: vortex-test-workflow (0)
🔇 Additional comments (82)
web/themes/custom/your_site_theme/js/your_site_theme.js (1)
3-3: Spelling standardization looks good.Updated to American English "behaviors" aligns with the project's style guide.
scripts/vortex/login.sh (1)
12-12: Clarified admin unblock flag description.The comment now accurately reflects that this flag solely controls unblocking the admin user.
.vortex/docs/content/contributing/roadmap.mdx (1)
28-28: Emphasize project name in roadmap entry.Applying bold Markdown to Vortex maintains consistency with other documentation.
web/sites/default/includes/providers/settings.acquia.php (1)
8-9: Generalized comment to “provider environments.”Replacing “Acquia environments” with “provider environments” improves clarity and aligns with other provider settings files.
.vortex/docs/content/tools/drush.mdx (2)
10-11: Highlight project name consistently.Bold formatting for Vortex ensures the terminology is emphasized uniformly across documentation.
15-16: Maintain consistent branding.Emphasizing Vortex in the description aligns this file with the rest of the docs suite.
.vortex/docs/content/contributing/maintenance/scripts.mdx (1)
85-85: Ensure branding consistency with bold formatting.The second occurrence of Vortex is now bolded, matching the emphasis style used throughout other documentation files.
.vortex/tests/bats/_helper.bash (1)
1354-1354: Spelling correction in comment.Updated “behaviour” to “behavior” to standardize to American English across the codebase.
renovate.json (1)
14-14: Standardize timezone to UTC.Changed the Renovate “timezone” setting to UTC, aligning with the project-wide configuration standard.
.vortex/docs/.utils/variables/extra/.env.variables.sh (1)
21-21: Spelling correction in environment docs.Replaced “sanitised” with “sanitized” in the comment for consistency with American English in documentation.
.vortex/docs/cspell.json (1)
40-40: Add “multisite” to recognized words.Included “multisite” in the spell‐checker dictionary to avoid false positives.
.vortex/docs/content/workflows/notifications.mdx (1)
1-3: Frontmatter configuration.Sidebar position set to 4 as intended; frontmatter block looks correct.
web/sites/default/includes/providers/settings.lagoon.php (1)
8-9: Documentation consistency improvement. Generalizing the wording to "provider environments" aligns this comment with other provider settings files and enhances clarity..github/workflows/build-test-deploy.yml (3)
62-62: Standardize timezone to UTC. UpdatingTZtoUTCfor the database job ensures consistency across CI environments.
171-171: Standardize timezone to UTC. UpdatingTZtoUTCfor the build job aligns with other pipeline stages.
369-369: Standardize timezone to UTC. UpdatingTZtoUTCfor the deploy job maintains uniform timezone configuration.docker-compose.yml (1)
44-44: Default timezone updated to UTC. Changing theTZdefault inx-environmenttoUTCensures container consistency with the rest of the project..vortex/docs/content/tools/renovate.mdx (1)
7-7: Branding consistency: bold "Vortex". Emphasizing Vortex matches the repository’s documentation style..vortex/docs/content/tools/docker.mdx (6)
9-9: Branding consistency: bold "Vortex". Aligns with project-wide doc styling.
77-77: Branding consistency: bold "Vortex". Maintains uniform emphasis across documentation.
93-93: Branding consistency: bold "Vortex". Enhances readability and consistency.
150-151: Branding consistency: bold "Vortex". Matches stylization used in related sections.
169-169: Standardize example timezone to UTC. Reflects the updated default timezone in the example snippet.
178-179: Update timezone description to UTC. Ensures the explanatory text matches the configured default..vortex/docs/content/ci/README.mdx (1)
61-61: Typographical correction applied
The change from “Of” to “If” accurately fixes the documentation.web/sites/default/includes/modules/settings.ys_base.php (1)
8-8: Enabling strict types is good practice
Addingdeclare(strict_types=1);helps catch type mismatches early..vortex/docs/content/tools/rector.mdx (1)
53-53: Consistent branding formatting
The addition of bold styling for “Vortex” aligns with other documentation updates..vortex/tests/bats/fixtures/docker-compose.env.json (1)
37-37: Timezone standardization in test fixture - LGTM.This fixture file correctly updates the timezone from "Australia/Melbourne" to "UTC" across all service definitions, aligning with the project-wide timezone standardization effort.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)
37-37: Consistent timezone standardization in fixture - LGTM.The timezone updates are consistent with the project-wide standardization effort and properly applied across all services.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)
37-37: Timezone standardization consistently applied - LGTM.The UTC timezone change is properly applied across all services in this fixture, maintaining consistency with the broader project standardization.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
tests/phpunit/Drupal/DatabaseSettingsTest.php (1)
43-43: Database port default updated correctly - LGTM.The change from empty string to "3306" correctly reflects the standard MySQL default port and aligns with the explicit default port setting introduced in the Drupal settings configuration.
.vortex/tests/bats/_helper.workflow.bash (2)
233-233: LGTM - Timezone standardization update.The change from
Australia/MelbournetoUTCaligns with the broader timezone standardization effort across the project. This ensures consistent timezone expectations in tests.
214-214: Good consistency improvement in comments.The capitalization fixes improve consistency in the comment style.
Also applies to: 257-257
web/sites/default/includes/modules/settings.automated_cron.php (1)
10-16: Environment-specific cron settings are appropriate.The logic to disable permission hardening and automated cron for local/CI environments is sound for development workflows.
web/sites/default/includes/modules/settings.system.php (2)
10-11: Good use of environment variable with fallback.The cache page max age configuration properly uses an environment variable with a sensible default fallback.
13-17: Production CSS/JS aggregation settings are appropriate.Enabling preprocessing for production environments is a best practice for performance.
.vortex/docs/content/getting-started/installation.mdx (3)
7-9: Installation process description improved.The new phrasing clearly outlines the two-step installation approach.
13-13: Updated integration instructions reference.Referencing relevant documentation sections instead of individual services improves maintainability.
78-79: Clarified integration setup statement.The wording accurately guides users to set up integrations with CI, hosting, and other services.
🧰 Tools
🪛 LanguageTool
[style] ~78-~78: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...on the services you are using, you will need to set up the integrations with CI, your h...(REP_NEED_TO_VB)
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...(YOUR)
.vortex/docs/.utils/variables/extra/ci.variables.sh (1)
70-72: Added RENOVATE_REPOSITORIES environment variable.The new variable is self-explanatory with the provided comment. Ensure users set it as "organization/repository" for self-hosted Renovate.
.vortex/docs/content/getting-started/features.mdx (3)
38-38: Reordered local development tooling list.Moving Lando below DDEV aligns with current support priorities.
47-47: Added Gherkin Lint to tooling features.Including Gherkin Lint completes the tooling coverage for behavior-driven development.
58-60: Expanded workflow feature list.Introducing database sourcing, deployment notifications, and Renovate updates enhances visibility of workflow capabilities.
.circleci/config.yml (3)
51-51: Standardized runner timezone to UTC.Setting
TZ: "UTC"ensures consistent timestamps across environments.
73-73: Updated artifact source path.Using
/tmp/workspace/codedirectly replaces the removedVORTEX_EXPORT_CODE_DIR.
256-258: Enhanced code export step with disk usage output.Adding
du -shprovides useful insight into the size of the exported codebase..vortex/docs/content/drupal/module-scaffold.mdx (5)
10-12: Clarified purpose ofys_basemodule.Explaining that
ys_baseholds general-purpose functionality improves reader understanding.
15-16: Refined prefix and theme naming recommendation.Suggesting site machine name for theme prefixes aligns with best practices.
20-22: Specified deploy file reference.Linking explicitly to
ys_base.deploy.phpmakes the example clear and actionable.
30-31: Enhanced tests scaffold description.Noting the presence of helper
Traitsadds valuable context for users writing tests.
34-36: Added link to Development workflow.Pointing to the Development section provides users with next steps for module work.
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
43-43: LGTM - Consistent token cleanup implementation.The addition of provider-specific settings token removal aligns well with the existing hosting token cleanup pattern. This ensures proper cleanup of both hosting and settings provider tokens during installation.
Also applies to: 48-48, 63-63, 73-73
.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)
8-13: Excellent improvement to dynamic URL generation.The change from a static placeholder to using
COMPOSE_PROJECT_NAMEwith a sensible fallback makes the local development URL automatically reflect the project directory name. The added documentation clearly explains the behavior and rationale.tests/phpunit/Drupal/SwitchableSettingsTest.php (2)
185-185: Good fix for docblock accuracy.Corrected the docblock to reference the correct test method
testEnvironmentIndicator()instead of the incorrecttestEntityPrint().
696-700: Correct test expectation for maintenance theme default.Updated the test to expect
'claro'as the default maintenance theme when no environment variables are set, which aligns with the updated business logic.README.md (2)
23-42: LGTM! Excellent documentation improvements.The rewritten introduction provides a much clearer and more comprehensive explanation of Vortex's value proposition. The structured approach covering onboarding benefits, complete foundation, standardization advantages, and maintenance practices gives readers a better understanding of what Vortex offers and why they should use it.
46-48: Clear and concise installation description.The updated installation section maintains clarity while emphasizing the flexibility and integration aspects of the installer.
.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)
61-61: LGTM! Consistent cleanup pattern for provider settings files.The addition of provider-specific settings file cleanup follows the established pattern in the codebase. Using
@unlinkis appropriate here as it safely handles cases where the files might not exist.Also applies to: 68-68
63-63: LGTM! Token cleanup follows established pattern.The new token removal calls for
SETTINGS_PROVIDER_GHAandSETTINGS_PROVIDER_CIRCLECIare consistent with the existing token cleanup approach in the method.Also applies to: 71-71
.vortex/docs/content/drupal/provision-example.sh (2)
17-18: Excellent error handling setup.The combination of
set -eufor strict error handling and conditional debug mode viaVORTEX_DEBUGfollows bash best practices.
22-26: Well-structured helper functions.The output formatting functions (
info,task,note) and drush wrapper provide clear, consistent logging and command execution patterns that enhance readability and maintainability..vortex/docs/content/README.mdx (1)
17-34: LGTM! Consistent documentation improvements across formats.The MDX version maintains the same excellent improvements as the main README.md, ensuring consistency between the repository documentation and the documentation site. The comprehensive description enhances the user experience across all documentation touchpoints.
.env (5)
4-16: LGTM! Excellent documentation improvements.The clarified comments significantly improve the file's usability by:
- Better explaining the file's role as the primary configuration location
- Clarifying variable formatting requirements
- Providing clearer guidance on local customization
34-35: Good standardization to UTC timezone.Changing the default timezone from "Australia/Melbourne" to "UTC" is a solid improvement for:
- International team collaboration
- Consistent logging across environments
- Avoiding timezone-related deployment issues
The static analysis warning about quote characters is a false positive - quotes are necessary here due to the forward slash in "UTC".
🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
86-86: Improved documentation references.Updating URLs to point to more specific provisioning documentation (
https://vortex.drevops.com/drupal/provision) provides users with more targeted guidance instead of generic workflows documentation.Also applies to: 102-102, 108-108
147-154: Enhanced clarity for database configuration.The expanded comments for
VORTEX_DB_DIRandVORTEX_DB_FILEprovide much clearer guidance on:
- The purpose of the directory for both import and export
- How the file is used for database initialization
223-236: Better notification configuration guidance.The updated comments for email notification variables provide clearer context about:
- Which settings apply specifically to email notifications
- More precise formatting requirements
The static analysis warning about quote characters on line 226 is a false positive - quotes are required for email addresses.
🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
[warning] 235-235: [QuoteCharacter] The value has quote characters (', ")
.vortex/docs/content/drupal/README.mdx (2)
13-13: Good simplification of module scaffold description.Changing from "Module scaffold with tests scaffold" to "Module scaffold" removes redundancy and improves clarity while maintaining the essential information.
24-38: 🧹 Nitpick (assertive)Excellent table formatting and content improvements.
The reformatted module table provides:
- Better visual alignment and readability
- More precise and consistent module descriptions
- Clearer explanations of functionality (e.g., "based on the environment" for config_split)
Consider this minor enhancement for line 36:
-| [`search_api_solr`](https://www.drupal.org/project/search_api_solr) | Integrates Apache Solr with Search API. | +| [`search_api_solr`](https://www.drupal.org/project/search_api_solr) | Integrates Apache Solr with the Search API. |Likely an incorrect or invalid review comment.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
tests/phpunit/Drupal/SettingsTestCase.php (3)
52-70: Good addition of testing path constants.Adding
PUBLIC_PATH_TESTING,TMP_PATH_TESTING, and organizing these constants improves:
- Test consistency across different path configurations
- Maintainability when path structures change
- Clear separation between testing and runtime configurations
72-92: Excellent centralization of allowed environment variables.The new
ALLOWED_ENV_VARSconstant provides:
- Single source of truth for environment variable filtering
- Better maintainability when new variable prefixes are needed
- Clear documentation of which variable types are supported
- Extensibility for consumer sites as noted in the comment
163-168: Improved environment variable handling.The updates to use the new constants and centralized filtering improve:
- Code consistency with the defined testing paths
- Maintainability through the
ALLOWED_ENV_VARSconstant- Flexibility for different environment configurations
.vortex/docs/content/workflows/variables.mdx (6)
187-187: Good simplification of DRUPAL_PROFILE description.Removing the redundant "name" from "Drupal profile name" to just "Drupal profile name" improves conciseness while maintaining clarity.
327-334: Valuable addition of RENOVATE_REPOSITORIES variable.This new variable documentation supports automated dependency management by:
- Clearly explaining the format requirement ("organization/repository")
- Providing context for Renovate bot configuration
- Aligning with the automated dependency update features mentioned in the PR
353-356: Consistent timezone standardization documentation.Updating the
TZvariable documentation to reflect the UTC default aligns perfectly with the.envfile changes and improves:
- Consistency across all configuration documentation
- International team collaboration support
- Predictable behavior across environments
533-534: Enhanced database configuration descriptions.The expanded descriptions for
VORTEX_DB_DIRandVORTEX_DB_FILEprovide much clearer guidance on:
- The dual purpose of the directory for import and export operations
- How the file is specifically used for database container initialization
- Better alignment with the
.envfile comment improvementsAlso applies to: 752-758
1176-1183: Improved local development URL documentation.The enhanced description better explains:
- The dynamic relationship with
COMPOSE_PROJECT_NAME- When and why to override the default
- The dependency on Docker Compose project directory naming
1214-1217: Better email notification configuration guidance.The clarified descriptions for email notification variables improve usability by:
- Explicitly stating which settings apply to email notifications
- Providing clearer context for configuration decisions
- Improving consistency with the
.envfile commentsAlso applies to: 1242-1243
.vortex/docs/content/drupal/theme-scaffold.mdx (3)
7-24: Documentation reads well – no action neededIntro, scope-clarification, and the “note” block are clear and helpful.
Nicely frames the scaffold’s purpose without being prescriptive.
27-59: LGTM on build-system sectionCommands are unambiguous and use Yarn consistently with Ahoy aliases.
No technical or wording issues spotted.
93-119: Directory tree looks accurateThe tree matches the actual scaffold layout; nothing to fix.
web/sites/default/settings.php (1)
90-92: Trusted-host pattern only allowslocalhostIn containerized locals this is fine, but dev/CI URLs (e.g.
nginx,web,127.0.0.1) will trigger 403s.
You may want to broaden or document how provider files append additional patterns.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🔭 Outside diff range comments (1)
.vortex/tests/bats/_helper.workflow.bash (1)
214-218: 🧹 Nitpick (assertive)Add assertions after restoring timezone
After restoring the.env, the test ends with a sleep but never re-verifies that the default UTC timezone is back in all containers. To fully validate the restore behavior, re-run the date checks (e.g.assert_output_contains "UTC") here.
♻️ Duplicate comments (1)
web/sites/default/includes/modules/settings.ys_base.php (1)
10-13: Use strict comparison for environment detectionThe loose equality operator (
==) should be replaced with strict equality (===) to avoid unintended type coercion during environment comparison, as previously identified.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (3)
.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (2)
.vortex/tests/bats/_helper.workflow.bash(3 hunks)web/sites/default/includes/modules/settings.ys_base.php(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (13)
- GitHub Check: build (0)
- GitHub Check: build (1)
- GitHub Check: vortex-test-installer (8.4)
- GitHub Check: vortex-test-installer (8.2)
- GitHub Check: vortex-test-installer (8.3)
- GitHub Check: vortex-test-deployment (1)
- GitHub Check: vortex-test-workflow (2)
- GitHub Check: vortex-test-deployment (0)
- GitHub Check: vortex-test-workflow (3)
- GitHub Check: vortex-test-workflow (0)
- GitHub Check: vortex-test-workflow (1)
- GitHub Check: vortex-test-common
- GitHub Check: vortex-test-docs
🔇 Additional comments (2)
web/sites/default/includes/modules/settings.ys_base.php (2)
1-6: LGTM!The file structure follows standard PHP practices with proper opening tag and comprehensive docblock documentation.
8-8: LGTM!Good practice using strict types declaration to enforce type safety.
e66531b to
5588be5
Compare
|
@coderabbitai resolve |
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🔭 Outside diff range comments (2)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)
58-64:⚠️ Potential issueInconsistent token naming in removeAcquia()
The callremoveTokenAsync('SETTINGS_PROVIDER_ACQUIA')lacks the!prefix used elsewhere. This inconsistency may leave tokens behind. Please align with the!SETTINGS_PROVIDER_ACQUIAnaming.
66-74:⚠️ Potential issueInconsistent token naming in removeLagoon()
Similar toremoveAcquia(),removeTokenAsync('SETTINGS_PROVIDER_LAGOON')should include the!prefix to match the token markers.
♻️ Duplicate comments (15)
.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
413-423: Add missing TZ environment variables for consistency.The
valkeyandwait_dependenciesservices are missing theTZenvironment variable that other services have. This was previously flagged but remains unresolved.Also applies to: 424-451
.vortex/tests/bats/_helper.workflow.bash (1)
232-240: Update comment and approve timezone standardizationThe timezone assertions correctly check for
TZ="UTC"and "UTC" in container outputs, standardizing on UTC across all environments. However, please remove or update the outdated comment referencing "AEDT/AEST" to reflect the current UTC usage.web/sites/default/includes/modules/settings.automated_cron.php (1)
18-21: 🛠️ Refactor suggestionAddress duplicated error logging configuration
The
system.logging.error_levelsetting here duplicates the same configuration insettings.system.php. This duplication can lead to maintenance issues and confusion about setting precedence.Consider consolidating this environment-specific setting into a single location or establishing clear documentation about the intended precedence order.
web/sites/default/includes/modules/settings.system.php (2)
21-21: Acknowledge the existing duplication issue.Based on past review comments, this setting duplicates configuration from
settings.automated_cron.php. While the current implementation is functionally correct, the architectural concern about settings duplication remains unaddressed.
26-26: Acknowledge the existing duplication issue.Based on past review comments, this setting duplicates the
system.logging error_levelconfiguration fromsettings.automated_cron.php. The duplication concern noted in previous reviews still applies.web/sites/default/includes/providers/settings.container.php (1)
15-24:⚠️ Potential issueFix potential type error in environment variable handling.
This is the same issue previously identified -
getenv()can returnfalsewhen the environment variable is not set, which would cause a type error when passed tostr_replace().🧰 Tools
🪛 PHPStan (2.1.15)
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
.vortex/docs/content/drupal/provision-example.sh (2)
30-32: Consider adding error handling for environment detection.While the drush command approach is appropriate, consider adding error handling in case Drupal isn't properly bootstrapped or the settings value isn't available.
-environment="$(drush php:eval "print \Drupal\core\Site\Settings::get('environment');")" +if ! environment="$(drush php:eval "print \Drupal\core\Site\Settings::get('environment');" 2>/dev/null)"; then + note "Warning: Could not detect environment from Drupal settings. Using 'local' as fallback." + environment="local" +fi
35-35: Simplify environment matching.The current approach with
echoandgrepworks but could be simplified using a case statement or bash pattern matching.-if echo "${environment}" | grep -q -e dev -e stage -e ci -e local; then +if [[ "${environment}" =~ ^(dev|stage|ci|local)$ ]]; then.vortex/docs/content/getting-started/architecture.mdx (1)
113-115: Fix the "POSIX-compliant" line break formatting issueThis formatting issue was already identified in previous reviews and should be fixed to improve readability.
.vortex/docs/content/drupal/provision.mdx (1)
50-54: Fix typo: "exist" should be "exit"The script will "exit" (not "exist") straight after start.
🧰 Tools
🪛 LanguageTool
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...(REP_WANT_TO_VB)
web/sites/default/settings.php (1)
79-81: Use$settings['maintenance_theme']instead of$config['maintenance_theme']Drupal expects the maintenance theme to be set in
$settings, not$config. The current code will not apply the maintenance theme correctly..vortex/docs/content/drupal/settings.mdx (2)
87-94: 🧹 Nitpick (assertive)Code block still marked as
jsoninstead ofphp
This was flagged previously and remains unresolved. Usingjsonkills PHP syntax highlighting.-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock> +<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
123-124: 🧹 Nitpick (assertive)“a variety of” → “multiple” (concise wording)
Same wording issue that was noted earlier; it’s still present.
-To support a variety of hosting providers and container platforms, +To support multiple hosting providers and container platforms,🧰 Tools
🪛 LanguageTool
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...(A_VARIETY_OF)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)
53-59: 🧹 Nitpick (assertive)Clarify that container maps to Local environment
The inline comment still reads simply “Container.” yet the expected result is
ENVIRONMENT_LOCAL. Please make the relationship explicit to avoid future confusion, e.g. “Container → Local environment”.
389-397:⚠️ Potential issueOverride assertions are overwritten – test never validates custom values
$settingsis first populated with the custom override values (custom_config,custom_public, etc.) but then re-assigned with defaultstatic::…constants, wiping the overrides.
The test therefore cannot catch regressions in override behaviour.- $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING; - ... - $settings['file_public_path'] = static::PUBLIC_PATH_TESTING; - $settings['file_private_path'] = static::PRIVATE_PATH_TESTING; - $settings['file_temp_path'] = static::TMP_PATH_TESTING; + // Keep the previously-set custom override paths so that the test + // actually verifies override behaviour.Same problem was highlighted in an earlier review but is still unresolved.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (95)
.vortex/docs/static/img/diagram-dark.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-light.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-provision-dark.svgis excluded by!**/*.svg.vortex/docs/static/img/diagram-provision-light.svgis excluded by!**/*.svg.vortex/docs/static/img/installer.pngis excluded by!**/*.png.vortex/installer/tests/Fixtures/install/_baseline/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/renovate.jsonis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_artifact/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_container_image/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_minimal/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_the_empire/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_clamav/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_valkey/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_none/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (56)
.ahoy.yml(3 hunks).circleci/config.yml(3 hunks).env(6 hunks).github/workflows/build-test-deploy.yml(3 hunks).vortex/docs/.utils/variables/extra/.env.local.example.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/.env.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/ci.variables.sh(1 hunks).vortex/docs/content/README.mdx(1 hunks).vortex/docs/content/ci/README.mdx(1 hunks).vortex/docs/content/contributing/maintenance/scripts.mdx(1 hunks).vortex/docs/content/contributing/roadmap.mdx(1 hunks).vortex/docs/content/drupal/README.mdx(2 hunks).vortex/docs/content/drupal/module-scaffold.mdx(2 hunks).vortex/docs/content/drupal/provision-example.sh(1 hunks).vortex/docs/content/drupal/provision.mdx(3 hunks).vortex/docs/content/drupal/settings.mdx(3 hunks).vortex/docs/content/drupal/theme-scaffold.mdx(1 hunks).vortex/docs/content/getting-started/architecture.mdx(9 hunks).vortex/docs/content/getting-started/features.mdx(3 hunks).vortex/docs/content/getting-started/installation.mdx(2 hunks).vortex/docs/content/tools/docker.mdx(6 hunks).vortex/docs/content/tools/drush.mdx(1 hunks).vortex/docs/content/tools/rector.mdx(1 hunks).vortex/docs/content/tools/renovate.mdx(1 hunks).vortex/docs/content/workflows/notifications.mdx(1 hunks).vortex/docs/content/workflows/variables.mdx(12 hunks).vortex/docs/cspell.json(1 hunks).vortex/installer/src/Prompts/Handlers/CiProvider.php(1 hunks).vortex/installer/src/Prompts/Handlers/HostingProvider.php(3 hunks).vortex/tests/bats/_helper.bash(1 hunks).vortex/tests/bats/_helper.workflow.bash(3 hunks).vortex/tests/bats/fixtures/docker-compose.env.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_local.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_mod.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.noenv.json(7 hunks)README.md(1 hunks)docker-compose.yml(1 hunks)renovate.json(1 hunks)scripts/vortex/login.sh(1 hunks)tests/phpunit/Drupal/DatabaseSettingsTest.php(1 hunks)tests/phpunit/Drupal/EnvironmentSettingsTest.php(22 hunks)tests/phpunit/Drupal/SettingsTestCase.php(2 hunks)tests/phpunit/Drupal/SwitchableSettingsTest.php(2 hunks)web/sites/default/includes/modules/settings.automated_cron.php(1 hunks)web/sites/default/includes/modules/settings.seckit.php(1 hunks)web/sites/default/includes/modules/settings.shield.php(1 hunks)web/sites/default/includes/modules/settings.stage_file_proxy.php(1 hunks)web/sites/default/includes/modules/settings.system.php(1 hunks)web/sites/default/includes/modules/settings.ys_base.php(1 hunks)web/sites/default/includes/providers/settings.acquia.php(1 hunks)web/sites/default/includes/providers/settings.circleci.php(1 hunks)web/sites/default/includes/providers/settings.container.php(1 hunks)web/sites/default/includes/providers/settings.gha.php(1 hunks)web/sites/default/includes/providers/settings.lagoon.php(1 hunks)web/sites/default/settings.php(6 hunks)web/themes/custom/your_site_theme/js/your_site_theme.js(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (2)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
File(10-120)removeTokenAsync(93-100)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (1)
tests/phpunit/Drupal/SettingsTestCase.php (4)
assertConfig(252-258)assertSettings(290-296)setEnvVars(153-182)requireSettingsFile(221-240)
🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...
(YOUR)
.vortex/docs/content/drupal/README.mdx
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/settings.mdx
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifying settings.php file. - It prevents enviro...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...
(A_VARIETY_OF)
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...
(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/provision.mdx
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...
(REP_WANT_TO_VB)
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...
(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...
(RECOMMENDED_COMPOUNDS)
[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
🪛 dotenv-linter (3.3.0)
.env
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
⏰ Context from checks skipped due to timeout of 90000ms (13)
- GitHub Check: build (0)
- GitHub Check: build (1)
- GitHub Check: vortex-test-installer (8.2)
- GitHub Check: vortex-test-installer (8.4)
- GitHub Check: vortex-test-workflow (1)
- GitHub Check: vortex-test-workflow (2)
- GitHub Check: vortex-test-installer (8.3)
- GitHub Check: vortex-test-workflow (0)
- GitHub Check: vortex-test-workflow (3)
- GitHub Check: vortex-test-common
- GitHub Check: vortex-test-deployment (0)
- GitHub Check: vortex-test-deployment (1)
- GitHub Check: vortex-test-docs
🔇 Additional comments (86)
scripts/vortex/login.sh (1)
12-12: Accurate doc update
The updated comment now correctly describes thatDRUPAL_UNBLOCK_ADMINis a flag to unblock the admin user..vortex/docs/cspell.json (1)
39-41: Approve addition of "multisite" to cspell dictionary.
The new term aligns with project terminology and enhances spell-check coverage..vortex/tests/bats/_helper.bash (1)
1353-1355: Approve American English spelling update in comment.
The change from "behaviour" to "behavior" is consistent with the project's standard spelling convention.web/themes/custom/your_site_theme/js/your_site_theme.js (1)
3-3: Approve spelling correction in file header comment.
Updating "behaviours" to "behaviors" aligns with the project's American English standard and has no functional impact..vortex/docs/.utils/variables/extra/.env.variables.sh (1)
21-22: Approve spelling correction in comment.
Changing "sanitised" to "sanitized" aligns with the updated cspell configuration and ensures consistency across documentation.renovate.json (1)
13-15: Approve timezone standardization in Renovate config.
Switching "Australia/Melbourne" to "UTC" ensures consistency with other CI/CD and environment settings across the project..vortex/docs/content/contributing/roadmap.mdx (1)
28-28: Brand emphasis styling applied correctly
The addition of Markdown bold formatting around Vortex aligns with the project-wide branding conventions.web/sites/default/includes/modules/settings.seckit.php (1)
10-10: Strict comparison is correct
Using===for environment checks improves type safety and consistency across settings files.web/sites/default/includes/providers/settings.lagoon.php (1)
8-9: Clarified comment for provider mapping
The updated description clearly states that this file only maps provider environments and avoids custom settings..github/workflows/build-test-deploy.yml (1)
62-62:✅ Verification successful
Verify complete timezone standardization
The TZ entries have been updated toUTCin database, build, and deploy jobs. Please confirm no remainingAustralia/Melbournereferences exist across workflows.Run this script:
Also applies to: 171-171, 369-369
🏁 Script executed:
#!/bin/bash # Confirm no remaining non-UTC timezone in GitHub workflows rg -n 'Australia/Melbourne' .github/workflows || rg -n 'TZ:' .github/workflows | grep -v 'TZ: UTC'Length of output: 95
Timezone Standardization Verified
All GitHub workflows now exclusively useTZ: UTC, and noAustralia/Melbournereferences remain.Verification steps:
- Searched for “Australia/Melbourne” in
.github/workflows– no matches found- Listed all
TZ:entries and filtered outUTC– no other timezones detectedweb/sites/default/includes/modules/settings.ys_base.php (1)
1-14: LGTM! Well-structured module settings file.The implementation follows PHP best practices with strict typing declaration and proper documentation. The strict comparison operator (===) correctly addresses the previous review feedback, and the CI environment check logic is sound for disabling mail sending during automated testing.
.vortex/docs/content/tools/renovate.mdx (1)
7-7: Documentation consistency improvement.Good addition of bold formatting to emphasize the "Vortex" name, aligning with the broader documentation standardization effort across the project.
docker-compose.yml (1)
44-44: Good timezone standardization to UTC.Changing the default timezone to UTC is a best practice for containerized applications that ensures consistent behavior across all environments and eliminates potential timezone-related issues in CI/CD pipelines.
.vortex/docs/content/tools/docker.mdx (2)
9-9: Consistent documentation formatting improvements.Good addition of bold formatting to emphasize "Vortex" throughout the documentation, maintaining consistency with the broader documentation standardization effort.
Also applies to: 77-77, 93-93, 150-150
169-169: Updated timezone examples to match standardization.Excellent update of the timezone examples from "Australia/Melbourne" to "UTC" to align with the project-wide timezone standardization. This ensures the documentation accurately reflects the default configuration.
Also applies to: 178-179
.vortex/docs/content/ci/README.mdx (1)
61-62: LGTM! Typo correction improves documentation clarity.The grammatical fix from "Of" to "If" makes the sentence read correctly and improves the overall documentation quality.
web/sites/default/includes/providers/settings.acquia.php (1)
8-9: LGTM! Comment generalization improves modularity.Updating the comment from "Acquia environments" to "provider environments" makes it more generic and reusable across different hosting providers, which aligns with the modular architecture goals.
.vortex/docs/content/tools/rector.mdx (1)
53-53: LGTM! Formatting consistency enhances documentation branding.Adding bold formatting to "Vortex" improves branding consistency and maintains professional documentation standards.
.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
37-37: LGTM! Timezone standardization to UTC improves consistency.The timezone updates from "Australia/Melbourne" to "UTC" across all services provide better standardization and alignment with the broader project changes.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
web/sites/default/includes/modules/settings.stage_file_proxy.php (1)
11-11: Excellent type safety improvement!Changing from loose inequality (
!=) to strict inequality (!==) prevents potential type coercion issues when comparing environment values. This is a best practice for PHP and ensures more predictable environment detection..vortex/tests/bats/fixtures/docker-compose.env.json (1)
37-37: Good timezone standardization to UTC!Standardizing all services to UTC is an excellent practice for containerized environments. This eliminates timezone-related issues, simplifies log correlation across services, and aligns with cloud platform defaults.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/docs/content/tools/drush.mdx (1)
10-10: Good brand consistency improvement!Consistently formatting "Vortex" in bold throughout the documentation enhances brand recognition and provides better visual hierarchy.
Also applies to: 15-15
.vortex/docs/content/contributing/maintenance/scripts.mdx (1)
85-85: Consistent bold formatting applied!Ensuring both instances of "Vortex" in the same sentence use consistent bold formatting improves the professional appearance and brand consistency of the documentation.
.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)
37-37: Approve fixture timezone update
All service environment blocks now use"TZ": "UTC", matching the standardized UTC timezone setting applied across the project’s Docker Compose configurations.Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)
37-37: Approve fixture timezone update
All service definitions were updated to"TZ": "UTC", ensuring the local-environment fixture aligns with the new UTC standard.Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
tests/phpunit/Drupal/DatabaseSettingsTest.php (1)
43-43: Align default port with settings
The data provider now expects'port' => '3306'by default, consistent with the explicit default port insettings.php..ahoy.yml (3)
199-201: Consistent Yarn usage for lint-fe
Updatedlint-feto useyarn run --cwdinstead ofnpm run --prefix, aligning with the project’s Yarn-based front-end workflows.
222-224: Consistent Yarn usage for lint-fe-fix
Switchedlint-fe-fixtoyarn run --cwd, ensuring both lint commands use the same execution pattern.
286-286: Spelling correction confirmed
The entrypoint comment now uses American English “behavior,” matching spelling conventions elsewhere in the codebase..vortex/docs/content/getting-started/installation.mdx (3)
7-9: Clarify installation scope
Rephrased to specify installing the Vortex template into the project’s codebase, improving readability and precision.
11-13: Improve installer instruction grammar
Changed phrasing to “an interactive installer” and refined the manual setup step reference for better grammar.
78-79: Streamline integration guidance
Removed Docker Hub and focused the list on CI, hosting, and other services, making the integrations section more concise.🧰 Tools
🪛 LanguageTool
[style] ~78-~78: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...on the services you are using, you will need to set up the integrations with CI, your h...(REP_NEED_TO_VB)
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...(YOUR)
web/sites/default/includes/modules/settings.shield.php (2)
24-24: Excellent improvement to type safety!The change from loose (
!=) to strict (!==) equality comparison ensures both type and value matching, preventing potential issues from type coercion in environment detection.
28-28: Consistent use of strict equality operators!The update to use strict equality (
===) for both environment comparisons aligns with the type safety improvements and ensures reliable environment detection..vortex/tests/bats/_helper.workflow.bash (1)
214-214: Approve spelling standardizationThe spelling changes to British English ("behaviour") align with project conventions.
Also applies to: 256-256
web/sites/default/includes/providers/settings.gha.php (1)
1-17: Clean provider environment mapping implementation!This file follows excellent architectural patterns:
- Clear documentation explaining its specific purpose
- Proper restriction against custom settings placement
- Consistent with other provider-specific settings files
- Uses strict typing for type safety
The simple environment variable check and mapping to
ENVIRONMENT_CIis exactly what's needed for GitHub Actions integration.web/sites/default/includes/modules/settings.automated_cron.php (1)
10-16: Approve environment-specific automated cron configurationThe conditional logic correctly applies LOCAL and CI environment-specific settings:
- Disabling permissions hardening is appropriate for development environments
- Setting cron interval to 0 prevents automated triggers in controlled environments
The use of strict equality operators aligns with the environment detection improvements.
web/sites/default/includes/modules/settings.system.php (2)
11-11: Good use of environment variable with fallback.The cache max age configuration properly uses an environment variable with a sensible default fallback. This provides flexibility while maintaining reasonable defaults.
13-17: Production CSS/JS preprocessing logic is correct.The conditional preprocessing configuration for production environments is properly implemented and follows Drupal best practices for performance optimization.
web/sites/default/includes/providers/settings.circleci.php (2)
15-17: Environment detection logic is correct.The conditional check for the
CIenvironment variable and mapping toENVIRONMENT_CIis properly implemented. The use of!empty(getenv('CI'))correctly handles both undefined and empty values.
3-11: Excellent documentation and guidance.The file header clearly explains the purpose and provides helpful guidance about not placing custom settings here. This promotes proper architectural separation between provider detection and application configuration.
.vortex/docs/content/getting-started/features.mdx (2)
58-60: Documentation updates align with project capabilities.The updated workflow feature descriptions accurately reflect the project's capabilities for database sourcing, deployment notifications, and automated dependency updates.
47-47:❓ Verification inconclusive
Verify Gherkin Lint integration is complete.
The feature is marked as completed (✅), but please confirm that Gherkin Lint is fully integrated into the project's tooling and CI pipeline.
🏁 Script executed:
#!/bin/bash # Description: Verify Gherkin Lint is properly integrated in the project # Expected: Find gherkin lint configuration and usage in CI # Check for gherkin lint configuration fd -e json -e yaml -e yml | xargs grep -l -i "gherkin" # Check for gherkin lint usage in CI rg -A 3 -B 3 "gherkin.*lint" --type yaml --type shLength of output: 390
Gherkin Lint configuration detected – please confirm CI invocation
I found the Gherkin Lint dependency and CLI task definition, but couldn’t locate its execution in the CI workflow. Please verify that your CI pipeline runs the lint-tests task so Gherkin Lint actually runs on push/pull requests.
• composer.json – includes “dantleech/gherkin-lint-php”
• .ahoy.yml – defineslint-tests➔vendor/bin/gherkinlint lint tests/behat/features
• Next step: ensure your CI config (e.g. in .github/workflows or .circleci/config.yml) invokesahoy lint-tests(or directly callsvendor/bin/gherkinlint) as part of its lint stage..vortex/docs/.utils/variables/extra/ci.variables.sh (1)
70-72: Well-documented environment variable addition.The new
RENOVATE_REPOSITORIESvariable is properly documented with clear instructions on the expected format. The naming follows project conventions and the purpose is clear..circleci/config.yml (3)
51-51: Good standardization to UTC timezone.This change aligns with the broader effort to standardize timezone settings across all environments, improving consistency and reducing potential timezone-related issues.
73-73: Hardcoded path simplifies configuration.The replacement of
VORTEX_EXPORT_CODE_DIRwith the explicit path/tmp/workspace/codesimplifies the configuration by reducing environment variable dependencies, which is consistent with the changes in the export codebase section.
256-258: Enhanced export process with disk usage reporting.The hardcoded path and addition of
du -shcommand provide better visibility into the exported codebase size, which is helpful for monitoring and debugging purposes..vortex/docs/content/drupal/module-scaffold.mdx (3)
10-12: Improved clarity in module description.The revised description better explains the purpose of the
ys_basemodule by clarifying it's for "general-purpose functionality that doesn't belong in a dedicated, feature-specific module" rather than the more vague previous wording.
20-21: Enhanced documentation with explicit file reference.Adding the specific filename
ys_base.deploy.phpand direct link improves the documentation's usefulness by providing concrete references.
32-35: Good addition of cross-reference to development workflow.The reference to the Development workflow documentation helps readers find more detailed information about working with custom modules.
.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)
61-63: Proper cleanup of GitHub Actions provider-specific settings.The addition of settings file removal and token cleanup ensures comprehensive cleanup when GitHub Actions is deselected, maintaining consistency with the provider management approach.
68-71: Comprehensive CircleCI provider cleanup.The cleanup logic properly removes both the settings file and associated token, ensuring no orphaned configuration remains when CircleCI is deselected.
web/sites/default/includes/providers/settings.container.php (1)
1-14: Well-structured provider settings file.The file follows the established pattern for provider-specific settings with clear documentation about its purpose and proper separation of concerns. The approach of mapping provider environments without including custom settings aligns with the modular configuration strategy.
.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (2)
8-11: Clarify comment formatting and context
The added comments clearly explain the derivation ofVORTEX_LOCALDEV_URLfromCOMPOSE_PROJECT_NAME.
13-13: Use a dynamic default for localdev URL
Switching from a hard-coded placeholder to${COMPOSE_PROJECT_NAME:-example-site}ensures the URL reflects the Docker Compose project name by default.README.md (2)
23-30: Expand the project introduction
The rewritten introduction provides a comprehensive overview of Vortex’s features and benefits, improving clarity for new users.
46-48: Enhance installer description
The new installer section wording is concise and informative, guiding users on setup options..vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)
41-45: Ensure removal of provider tokens for Acquia
Adding!SETTINGS_PROVIDER_ACQUIAalongside!HOSTING_ACQUIAkeeps the setup modular by cleaning up both hosting and settings tokens.
46-49: Ensure removal of provider tokens for Lagoon
Mirroring the Acquia logic, removing both!HOSTING_LAGOONand!SETTINGS_PROVIDER_LAGOONmaintains consistency.tests/phpunit/Drupal/SwitchableSettingsTest.php (2)
185-186: Correct data provider docblock
Updating the docblock to accurately describedataProviderEnvironmentIndicator()improves documentation consistency.
696-700: Update default maintenance theme to 'claro'
Aligning the test with the new default'claro'ensures the test suite reflects the updated behavior..vortex/docs/content/README.mdx (1)
17-35: Improve documentation introduction
The enhanced introduction clearly outlines Vortex’s purpose, features, and maintenance model for better onboarding..vortex/docs/content/drupal/provision-example.sh (2)
1-18: LGTM! Well-structured script foundation.The script demonstrates good practices with proper shebang, error handling (
set -eu), debug mode support, and clear documentation comments.
22-26: LGTM! Clean helper functions.The helper functions provide consistent formatting for different types of output messages, making the script output more readable and professional.
.env (3)
34-35: LGTM! Timezone standardization to UTC.Changing the default timezone from "Australia/Melbourne" to "UTC" is excellent for standardization across environments and avoids timezone-related issues in multi-region deployments.
🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
4-7: LGTM! Improved documentation clarity.The updated comments better emphasize that this file should be the primary location for configuration changes, improving maintainability.
134-154: LGTM! Enhanced database section documentation.The renamed section header "DATABASE SOURCE" and improved comments provide clearer guidance on database import sources and dump file usage.
.vortex/docs/content/drupal/README.mdx (2)
22-22: LGTM! Improved clarity with "need to add".Changing from "would add" to "would need to add" better emphasizes the necessity of adding modules and themes after initial setup.
24-38: LGTM! Enhanced table formatting and descriptions.The improved table alignment and refined module descriptions provide clearer, more precise information about each module's purpose.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
tests/phpunit/Drupal/SettingsTestCase.php (3)
48-50: LGTM! Logical constant reordering.Moving
ENVIRONMENT_PRODto a later position aligns with a logical ordering of environment types.
72-92: LGTM! Excellent centralization of allowed environment variables.The new
ALLOWED_ENV_VARSconstant provides a centralized way to manage which environment variables are allowed during testing, improving maintainability and reducing duplication.
162-168: LGTM! Consistent use of centralized constants.The updated
setEnvVarsmethod properly utilizes the newALLOWED_ENV_VARSconstant and maintains logical ordering of environment variable assignments..vortex/docs/content/workflows/variables.mdx (4)
327-334: New Renovate repositories variable looks goodThe addition of
RENOVATE_REPOSITORIESvariable is well-documented and follows the existing documentation format. The description clearly explains its purpose for managing repositories in self-hosted Renovate bot configurations.
353-356: Appropriate timezone standardization to UTCThe change from "Australia/Melbourne" to "UTC" as the default timezone is a good practice for ensuring consistency across different deployments and environments. UTC is the international standard for server configurations.
1176-1182: Dynamic local URL default value is more flexibleThe change from a static
http://your-site.docker.amazee.ioto a dynamic value based onCOMPOSE_PROJECT_NAMEprovides better flexibility and aligns with Docker Compose's project naming conventions. The added explanation clearly describes when to override this value.
1566-1566: Consistent spelling correction to American EnglishThe spelling corrections from "sanitised" to "sanitized" ensure consistency with American English spelling conventions used throughout the documentation.
Also applies to: 1574-1574, 1593-1593
.vortex/docs/content/getting-started/architecture.mdx (3)
12-16: Clear introduction sets proper contextThe added introduction effectively explains the purpose of this architecture page and how it provides a foundation for understanding Vortex's structure and developer experience.
29-35: System components diagrams enhance visual understandingThe addition of system component diagrams with both light and dark mode support improves the documentation's accessibility and helps visualize the architecture.
237-268: Comprehensive explanation of template systemThe new "Template placeholders and tokens" section provides excellent documentation about how Vortex handles project customization. The examples for different file types (shell scripts, YAML, Markdown) make it clear how the token system works.
.vortex/docs/content/drupal/theme-scaffold.mdx (2)
7-25: Excellent transformation from placeholder to comprehensive documentationThe theme scaffold documentation has been transformed from a simple placeholder into a comprehensive guide. The introduction clearly explains the purpose, naming conventions, and emphasizes the flexibility of the scaffold approach.
27-91: Thorough build system documentation with clear examplesThe build system section provides excellent coverage of:
- All available Grunt tasks (SCSS, JS, linting, watching)
- Both Yarn and Ahoy command examples
- Clear explanation of Docker container usage for consistency
- Helpful guidance on maintaining command structure conventions
This will significantly help developers understand and work with the theme build system.
.vortex/docs/content/drupal/provision.mdx (2)
17-37: Excellent rationale section explains the "why"The new "Rationale" section effectively explains why
provision.shis necessary beyond justdrush deploy. It clearly articulates the gaps it fills and the value it provides for consistent, automated provisioning across environments.
66-85: Important security clarification for database sanitizationThe restructured database sanitization section with the warning box effectively communicates:
- When sanitization occurs (after import, not before)
- Security implications for dump file access
- Alternative solutions for highly sensitive data
This is crucial information for teams handling sensitive data.
web/sites/default/settings.php (3)
26-46: Well-structured database configuration with comprehensive fallbacksThe refactored database configuration provides excellent flexibility with multiple environment variable fallbacks. The explicit default port of '3306' prevents potential connection issues.
72-77: Smart hash salt generation and UTC timezone standardization
- Using
DRUPAL_HASH_SALTwith a fallback to a hash of the database host is a clever approach that ensures uniqueness while allowing explicit configuration.- The timezone standardization to UTC aligns with the documentation changes and provides consistency across environments.
106-161: Excellent modularization of environment detection and settingsThe reorganization provides:
- Clear separation of concerns with environment constants defined upfront
- Modular loading of provider-specific and module-specific settings
- Override capability via
DRUPAL_ENVIRONMENTvariable- Clean file organization in
includes/providersandincludes/modulesThis architecture significantly improves maintainability and follows the documentation's promise of environment-specific configuration management.
✅ Actions performedComments resolved. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
🔭 Outside diff range comments (1)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (1)
24-966: 🧹 Nitpick (assertive)Consider extracting helper methods to reduce duplication
Every test method manually assembles large
$configand$settingsarrays that differ only in a few keys. Consider creating helper methods likegetBaseSettings()andgetBaseConfig()to DRY up the code.Example helper method:
protected function getBaseConfig(): array { return [ 'environment_indicator.settings' => [ 'favicon' => TRUE, 'toolbar_integration' => [TRUE], ], 'maintenance_theme' => 'claro', 'system.performance' => [ 'cache' => ['page' => ['max_age' => 900]], ], ]; }
♻️ Duplicate comments (21)
.vortex/docs/content/workflows/notifications.mdx (1)
1-3: Add missing sidebar_label metadata for proper navigation.The frontmatter is missing the
sidebar_labelmetadata required for correct sidebar display.Apply this diff to add the missing metadata:
--- +sidebar_label: Notifications sidebar_position: 4 ---.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
413-451: Missing TZ environment variable for valkey and wait_dependencies services.As identified in the existing review comment, the valkey and wait_dependencies services lack the "TZ": "UTC" environment variable that other services have.
.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)
413-451: Missing TZ environment variable for valkey and wait_dependencies services.Same issue as in docker-compose.noenv.json - the valkey and wait_dependencies services need "TZ": "UTC" added to their environment blocks for consistency.
.vortex/tests/bats/fixtures/docker-compose.env.json (1)
413-451: Missing TZ environment variable for valkey and wait_dependencies services.Consistent with other fixture files, these services are missing the "TZ": "UTC" environment variable for complete timezone standardization.
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)
413-451: Missing TZ environment variable for valkey and wait_dependencies services.Same missing TZ environment variable issue as in the other fixture files - valkey and wait_dependencies services need "TZ": "UTC" for consistency.
web/sites/default/includes/modules/settings.automated_cron.php (1)
18-21: Consolidate duplicatedsystem.logging.error_levelsettingsBoth
settings.system.php(line 26) andsettings.automated_cron.php(line 18-21) define the same error logging configuration. This duplication creates maintenance overhead and potential conflicts.Consider consolidating environment-specific error logging settings in a single location to follow the DRY principle.
web/sites/default/includes/modules/settings.system.php (1)
19-22: Settings duplication detected across module files.The
skip_permissions_hardeningsetting here duplicates the same configuration insettings.automated_cron.php(lines 10-12). This duplication creates maintenance overhead and potential conflicts.Consider consolidating environment-specific settings in a single location or documenting the intended precedence order.
web/sites/default/includes/providers/settings.container.php (1)
15-24:⚠️ Potential issueFix potential type error in environment variable handling.
This is the same issue identified in previous reviews -
getenv()can returnfalsewhen the environment variable is not set, which would cause a type error when passed tostr_replace().Apply the previously suggested fix:
-if (!empty(getenv('VORTEX_LOCALDEV_URL'))) { +$localdev_url = getenv('VORTEX_LOCALDEV_URL'); +if (!empty($localdev_url) && is_string($localdev_url)) { // Local development URL. $patterns = str_replace(['.', 'https://', 'http://', ','], [ '\.', '', '', '|', - ], getenv('VORTEX_LOCALDEV_URL')); + ], $localdev_url); $settings['trusted_host_patterns'][] = '^' . $patterns . '$'; // URL when accessed from Behat tests. $settings['trusted_host_patterns'][] = '^nginx$'; }🧰 Tools
🪛 PHPStan (2.1.15)
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
.vortex/docs/content/drupal/provision-example.sh (2)
30-33: Add error handling around environment detection. Ifdrush php:evalfails or returns empty, the script may misclassify. Consider catching failures or defaulting to a safe environment.
35-35: Simplify environment check. Replaceecho … | grep -q -e dev -e stage -e ci -e localwith a shell pattern match orcasefor readability:if [[ $environment =~ ^(dev|stage|ci|local)$ ]]; then … fi.vortex/docs/content/getting-started/architecture.mdx (1)
113-114: Fix the line break in "POSIX-compliant".The hyphen and word are split across lines, which breaks readability as noted in previous reviews.
Apply this fix:
-**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX) --compliant +**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX)-compliant.vortex/docs/content/drupal/provision.mdx (2)
50-50: Fix typo: "exist" should be "exit"This grammar issue was previously identified but not fixed.
-1. `VORTEX_PROVISION_SKIP=1`<br/>Kill-switch to completely skip provisioning. The script will exist straight after start. Useful in emergencies when any kind of automation needs to be disabled.<br/><br/> +1. `VORTEX_PROVISION_SKIP=1`<br/>Kill-switch to completely skip provisioning. The script will exit straight after start. Useful in emergencies when any kind of automation needs to be disabled.<br/><br/>
99-99: Use "usernames" as one wordThis style issue was previously identified but not fixed.
-3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> +3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize usernames.<br/><br/>🧰 Tools
🪛 LanguageTool
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4.VORT...(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...(RECOMMENDED_COMPOUNDS)
.vortex/docs/content/drupal/settings.mdx (4)
12-14: Add possessive "its" for proper grammarThis grammar issue was previously identified but not fixed.
-**Vortex** ships with own streamlined version of +**Vortex** ships with its own streamlined version of🧰 Tools
🪛 LanguageTool
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...(AI_EN_LECTOR_MISSING_PUNCTUATION)
60-61: Add article "the" before "settings.php file"This grammar issue was previously identified but not fixed.
-without modifying `settings.php` file. +without modifying the `settings.php` file.🧰 Tools
🪛 LanguageTool
[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifyingsettings.phpfile. - It prevents enviro...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
92-92: Fix code block language from "json" to "php"The imported file is PHP code but the language is incorrectly specified as "json".
-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock> +<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
245-245:⚠️ Potential issueFix duplicate code block language issue
The same PHP file is displayed with incorrect "json" language specification here as well.
-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock> +<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>web/sites/default/settings.php (1)
79-80: Critical: Use$settings['maintenance_theme']instead of$config['maintenance_theme']Drupal reads the maintenance theme from
$settings, not$config. The current code will not apply the maintenance theme correctly.-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro'; +$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';tests/phpunit/Drupal/EnvironmentSettingsTest.php (3)
389-396: Critical: Custom override values are immediately overwrittenThe test sets custom override paths but then immediately overwrites them with default testing constants, making the test ineffective.
Remove the duplicate assignments that overwrite the custom values:
- $settings['config_exclude_modules'] = []; - $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING; - $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml'; - $settings['entity_update_batch_size'] = 50; - $settings['environment'] = static::ENVIRONMENT_SUT; - $settings['file_public_path'] = static::PUBLIC_PATH_TESTING; - $settings['file_private_path'] = static::PRIVATE_PATH_TESTING; - $settings['file_temp_path'] = static::TMP_PATH_TESTING;
53-59: 🧹 Nitpick (assertive)Consider clarifying the container environment mapping
The comment "Container" could be more explicit about the fact that container environments map to the local environment type.
- // Container. + // Container environments map to local environment.
358-368: 🧹 Nitpick (assertive)Clarify the intentional port mismatch in the test
Using port 5432 (PostgreSQL default) with MySQL driver could confuse readers. Add a comment explaining this is intentional for testing override behavior.
'DATABASE_HOST' => 'custom_host', + // Intentionally using a non-MySQL port to verify override behavior. 'DATABASE_PORT' => '5432', 'DATABASE_CHARSET' => 'utf8',
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (95)
.vortex/docs/static/img/diagram-dark.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-light.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-provision-dark.svgis excluded by!**/*.svg.vortex/docs/static/img/diagram-provision-light.svgis excluded by!**/*.svg.vortex/docs/static/img/installer.pngis excluded by!**/*.png.vortex/installer/tests/Fixtures/install/_baseline/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/renovate.jsonis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_artifact/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_container_image/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_minimal/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_the_empire/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_clamav/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_valkey/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_none/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (56)
.ahoy.yml(3 hunks).circleci/config.yml(3 hunks).env(6 hunks).github/workflows/build-test-deploy.yml(3 hunks).vortex/docs/.utils/variables/extra/.env.local.example.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/.env.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/ci.variables.sh(1 hunks).vortex/docs/content/README.mdx(1 hunks).vortex/docs/content/ci/README.mdx(1 hunks).vortex/docs/content/contributing/maintenance/scripts.mdx(1 hunks).vortex/docs/content/contributing/roadmap.mdx(1 hunks).vortex/docs/content/drupal/README.mdx(2 hunks).vortex/docs/content/drupal/module-scaffold.mdx(2 hunks).vortex/docs/content/drupal/provision-example.sh(1 hunks).vortex/docs/content/drupal/provision.mdx(3 hunks).vortex/docs/content/drupal/settings.mdx(3 hunks).vortex/docs/content/drupal/theme-scaffold.mdx(1 hunks).vortex/docs/content/getting-started/architecture.mdx(9 hunks).vortex/docs/content/getting-started/features.mdx(3 hunks).vortex/docs/content/getting-started/installation.mdx(2 hunks).vortex/docs/content/tools/docker.mdx(6 hunks).vortex/docs/content/tools/drush.mdx(1 hunks).vortex/docs/content/tools/rector.mdx(1 hunks).vortex/docs/content/tools/renovate.mdx(1 hunks).vortex/docs/content/workflows/notifications.mdx(1 hunks).vortex/docs/content/workflows/variables.mdx(12 hunks).vortex/docs/cspell.json(1 hunks).vortex/installer/src/Prompts/Handlers/CiProvider.php(1 hunks).vortex/installer/src/Prompts/Handlers/HostingProvider.php(3 hunks).vortex/tests/bats/_helper.bash(1 hunks).vortex/tests/bats/_helper.workflow.bash(3 hunks).vortex/tests/bats/fixtures/docker-compose.env.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_local.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_mod.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.noenv.json(7 hunks)README.md(1 hunks)docker-compose.yml(1 hunks)renovate.json(1 hunks)scripts/vortex/login.sh(1 hunks)tests/phpunit/Drupal/DatabaseSettingsTest.php(1 hunks)tests/phpunit/Drupal/EnvironmentSettingsTest.php(22 hunks)tests/phpunit/Drupal/SettingsTestCase.php(2 hunks)tests/phpunit/Drupal/SwitchableSettingsTest.php(2 hunks)web/sites/default/includes/modules/settings.automated_cron.php(1 hunks)web/sites/default/includes/modules/settings.seckit.php(1 hunks)web/sites/default/includes/modules/settings.shield.php(1 hunks)web/sites/default/includes/modules/settings.stage_file_proxy.php(1 hunks)web/sites/default/includes/modules/settings.system.php(1 hunks)web/sites/default/includes/modules/settings.ys_base.php(1 hunks)web/sites/default/includes/providers/settings.acquia.php(1 hunks)web/sites/default/includes/providers/settings.circleci.php(1 hunks)web/sites/default/includes/providers/settings.container.php(1 hunks)web/sites/default/includes/providers/settings.gha.php(1 hunks)web/sites/default/includes/providers/settings.lagoon.php(1 hunks)web/sites/default/settings.php(6 hunks)web/themes/custom/your_site_theme/js/your_site_theme.js(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (2)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
File(10-120)removeTokenAsync(93-100)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (1)
tests/phpunit/Drupal/SettingsTestCase.php (4)
assertConfig(252-258)assertSettings(290-296)setEnvVars(153-182)requireSettingsFile(221-240)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...
(YOUR)
.vortex/docs/content/drupal/README.mdx
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/settings.mdx
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifying settings.php file. - It prevents enviro...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...
(A_VARIETY_OF)
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...
(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/provision.mdx
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...
(REP_WANT_TO_VB)
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...
(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...
(RECOMMENDED_COMPOUNDS)
[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
🪛 dotenv-linter (3.3.0)
.env
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
🪛 GitHub Check: codecov/patch
.vortex/tests/bats/_helper.workflow.bash
[warning] 232-232: .vortex/tests/bats/_helper.workflow.bash#L232
Added line #L232 was not covered by tests
[warning] 234-234: .vortex/tests/bats/_helper.workflow.bash#L234
Added line #L234 was not covered by tests
[warning] 236-236: .vortex/tests/bats/_helper.workflow.bash#L236
Added line #L236 was not covered by tests
[warning] 238-238: .vortex/tests/bats/_helper.workflow.bash#L238
Added line #L238 was not covered by tests
[warning] 240-240: .vortex/tests/bats/_helper.workflow.bash#L240
Added line #L240 was not covered by tests
⏰ Context from checks skipped due to timeout of 90000ms (3)
- GitHub Check: vortex-test-workflow (1)
- GitHub Check: vortex-test-workflow (2)
- GitHub Check: vortex-test-workflow (0)
🔇 Additional comments (88)
web/themes/custom/your_site_theme/js/your_site_theme.js (1)
3-3: LGTM: Spelling standardization.Good change standardizing from British English "behaviours" to American English "behaviors" for consistency across the project.
.vortex/docs/cspell.json (1)
40-40: LGTM: Adding Drupal-specific terminology.Adding "multisite" to the spell checker dictionary is appropriate for a Drupal project, as this is standard Drupal terminology that should be recognized.
scripts/vortex/login.sh (1)
12-12: LGTM: Accurate comment clarification.The updated comment correctly reflects the script's behavior - the flag only controls unblocking functionality, not blocking.
.vortex/docs/content/contributing/roadmap.mdx (1)
28-28: LGTM: Brand consistency improvement.Adding bold formatting to "Vortex" enhances brand visibility and maintains consistency with similar formatting applied across other documentation files.
.vortex/docs/content/contributing/maintenance/scripts.mdx (1)
85-86: Consistent emphasis on “Vortex”
This change purely adds bold formatting for branding consistency in documentation.docker-compose.yml (1)
44-44: Standardize default timezone to UTC
UpdatingTZtoUTCaligns with cross‐environment consistency. No other service configs are affected..vortex/docs/content/tools/drush.mdx (1)
10-11: Stylistic formatting update for “Vortex”
These are purely bold‐text enhancements in docs to emphasize the project name.Also applies to: 15-16
.vortex/tests/bats/_helper.bash (1)
1354-1370: American English spelling standardization
The comment spelling was corrected from “behaviour” to “behavior”. No functional changes..vortex/docs/.utils/variables/extra/.env.variables.sh (1)
21-23: Spelling correction in comment
Changed “sanitised” to “sanitized” for consistency with American English in docs.renovate.json (1)
14-14: LGTM! Timezone standardization to UTC is a good practice.Setting the timezone to UTC ensures consistent behavior across different geographic locations and aligns with the broader timezone standardization effort mentioned in the AI summary.
web/sites/default/includes/providers/settings.lagoon.php (1)
8-9: Good documentation improvement for provider abstraction.The comment update from "Lagoon environments" to "provider environments" makes the documentation more generic and consistent with the modular provider approach used across the codebase.
web/sites/default/includes/modules/settings.seckit.php (1)
10-10: Excellent improvement with strict equality comparison.Changing from
==to===ensures type-safe comparison of environment constants, preventing potential type coercion issues and improving code reliability..vortex/docs/content/tools/docker.mdx (2)
9-9: LGTM: Consistent documentation formattingThe bold formatting applied to "Vortex" throughout the documentation improves brand consistency and emphasis.
Also applies to: 77-77, 93-93, 150-150
169-169: LGTM: Timezone standardization to UTCChanging the default timezone example from
Australia/MelbournetoUTCaligns with the broader effort to standardize timezones across all environments, which is a best practice for containerized applications.Also applies to: 178-180
.github/workflows/build-test-deploy.yml (1)
62-62: LGTM: Consistent timezone standardization across CI jobsStandardizing the timezone to UTC across all container environments (database, build, and deploy jobs) is a best practice that ensures consistent behavior regardless of where the CI pipeline runs and avoids potential issues with daylight saving time transitions.
Also applies to: 171-171, 369-369
web/sites/default/includes/modules/settings.ys_base.php (2)
8-8: LGTM: Strict typing declarationUsing
declare(strict_types=1);is a good practice that helps prevent type-related bugs and improves code reliability.
10-13: LGTM: Proper CI environment handlingThe strict comparison (
===) for environment detection and the practice of disabling mail sending in CI environments are both excellent implementations that prevent accidental email delivery during testing..vortex/docs/content/tools/renovate.mdx (1)
7-7: LGTM: Consistent documentation formattingAdding bold formatting to "Vortex" maintains consistency with the documentation-wide formatting standards being applied across the project.
.vortex/docs/content/ci/README.mdx (1)
61-62: LGTM! Typo correction improves readability.The fix from "Of cache" to "If cache" corrects a grammatical error and makes the sentence properly readable.
web/sites/default/includes/providers/settings.acquia.php (1)
8-9: Good standardization of provider settings documentation.The change from "Acquia environments" to "provider environments" makes the comment more generic and aligns with the modular approach for provider settings files.
.vortex/docs/content/tools/rector.mdx (1)
53-54: Good formatting consistency improvement.Making "Vortex" bold aligns with the formatting used throughout the documentation and improves visual consistency.
web/sites/default/includes/modules/settings.stage_file_proxy.php (1)
11-11: Excellent type safety improvement.The change from loose (
!=) to strict (!==) inequality comparison follows PHP best practices and ensures both value and type are compared when checking the environment constant..vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
37-37: Timezone standardization to UTC completed successfully.The timezone updates from "Australia/Melbourne" to "UTC" are consistently applied across all services with environment blocks.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)
37-37: Timezone standardization to UTC completed successfully.The timezone updates are consistently applied across all services with environment configurations.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env.json (1)
37-37: Timezone standardization to UTC completed successfully.All services with environment blocks have been properly updated to use UTC timezone.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)
37-37: Timezone standardization to UTC completed successfully.The timezone configuration has been properly updated across all relevant services.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
tests/phpunit/Drupal/DatabaseSettingsTest.php (1)
43-43: Improved test accuracy with explicit default port.Changing the default port from an empty string to "3306" makes the test more explicit and aligns with the standard MySQL default port, improving test reliability.
web/sites/default/includes/modules/settings.shield.php (1)
24-24: Excellent use of strict equality operators for type safety.The change from loose (
!=,==) to strict (!==,===) equality operators improves type safety and prevents potential issues with type coercion in environment comparisons.Also applies to: 28-28
.vortex/docs/content/getting-started/installation.mdx (1)
7-9: Documentation improvements enhance clarity and user guidance.The changes successfully:
- Clarify the installation scope ("into your project's codebase")
- Direct users to relevant documentation sections
- Streamline the integration services list
The grammar in "your hosting" is correct (the static analysis suggestion is a false positive).
Also applies to: 13-13, 79-79
.vortex/tests/bats/_helper.workflow.bash (2)
232-240: Timezone standardization to UTC successfully implemented.The changes correctly update all timezone assertions from Australian timezones to UTC, aligning with the project-wide standardization effort. This ensures consistent behavior across all environments.
🧰 Tools
🪛 GitHub Check: codecov/patch
[warning] 232-232: .vortex/tests/bats/_helper.workflow.bash#L232
Added line #L232 was not covered by tests
[warning] 234-234: .vortex/tests/bats/_helper.workflow.bash#L234
Added line #L234 was not covered by tests
[warning] 236-236: .vortex/tests/bats/_helper.workflow.bash#L236
Added line #L236 was not covered by tests
[warning] 238-238: .vortex/tests/bats/_helper.workflow.bash#L238
Added line #L238 was not covered by tests
[warning] 240-240: .vortex/tests/bats/_helper.workflow.bash#L240
Added line #L240 was not covered by tests
214-214: Spelling standardization to American English.Good consistency improvement changing "behaviour" to "behavior" throughout the codebase.
Also applies to: 256-256
.ahoy.yml (2)
200-200: Excellent tooling consistency improvement.The standardization to
yarn run --cwdfor bothlint-feandlint-fe-fixcommands ensures consistent front-end tooling usage throughout the project. This addresses the previous inconsistency between npm and yarn usage.Also applies to: 223-223
286-286: Spelling standardization completed.Good consistency improvement changing "behaviour" to "behavior" to match American English spelling used throughout the project.
web/sites/default/includes/modules/settings.system.php (2)
11-11: Good use of environment variable with fallback.The cache max age configuration properly uses an environment variable with a sensible default fallback value. This promotes flexibility across different deployment environments.
13-17: Appropriate production-specific optimization.CSS and JS preprocessing is correctly enabled only in production environment, which is the proper approach for performance optimization while maintaining development convenience.
web/sites/default/includes/providers/settings.circleci.php (1)
3-11: Excellent documentation and separation of concerns.The file documentation clearly explains the purpose and scope, properly directing developers to use per-module settings files for custom configuration. This promotes good architectural separation.
.vortex/docs/content/getting-started/features.mdx (3)
38-38: Reorder local development tools correctly
Moved Lando below DDEV to reflect the intended tooling order.
47-47: Add Gherkin Lint to tooling list
Gherkin Lint is now included under Tooling, aligning with the CI integration.
58-60: Document new workflow features
Deployment notifications and automated dependency updates have been marked as completed, matching recent CI/CD enhancements..vortex/docs/.utils/variables/extra/ci.variables.sh (1)
69-72: Introduce RENOVATE_REPOSITORIES environment variable
New variable for specifying which repositories Renovate should manage, complementing self-hosted Renovate configuration..circleci/config.yml (3)
51-51: Standardize runner timezone to UTC
UpdatedTZto"UTC"for consistent timestamp handling across CI jobs.
73-73: Use explicit artifact source path
ReplacedVORTEX_EXPORT_CODE_DIRwith a hardcoded/tmp/workspace/codefor clarity and reliability.
256-259: Enhance code export step with disk usage summary
Ensured the export directory is created, copied, and reported withdu -shfor build diagnostics..vortex/installer/src/Prompts/Handlers/HostingProvider.php (4)
43-43: Remove SETTINGS_PROVIDER_ACQUIA token
Added removal of the!SETTINGS_PROVIDER_ACQUIAtoken to align with new provider-specific settings.
48-48: Remove SETTINGS_PROVIDER_LAGOON token
Added removal of the!SETTINGS_PROVIDER_LAGOONtoken to clean up Lagoon-related settings.
63-63: Cleanup SETTINGS_PROVIDER_ACQUIA in Acquia removal
Ensured provider settings token is also removed when cleaning up Acquia hooks.
73-73: Cleanup SETTINGS_PROVIDER_LAGOON in Lagoon removal
Extended Lagoon cleanup to remove the provider settings token..vortex/docs/content/drupal/module-scaffold.mdx (5)
10-12: Clarify general-purpose module recommendation
Reworded to specify thatys_baseshould hold functionality not tied to feature-specific modules.
15-16: Refine prefix and theme naming advice
Updated guidance to use the site machine name for themes, improving naming consistency.
20-21: Specify deploy file explicitly
Renamed reference toys_base.deploy.phpwith direct GitHub link for clarity.
30-31: Smoothen tests scaffold description
Improved phrasing around test helpers and traits for better readability.
34-35: Link to development workflow documentation
Added a pointer to the Development workflow for working with custom modules..vortex/installer/src/Prompts/Handlers/CiProvider.php (2)
61-63: LGTM! Proper cleanup of GitHub Actions provider settings.The added cleanup logic for
settings.gha.phpandSETTINGS_PROVIDER_GHAtoken correctly follows the existing pattern and ensures consistent removal when GitHub Actions is deselected.
68-71: LGTM! Proper cleanup of CircleCI provider settings.The added cleanup logic for
settings.circleci.phpandSETTINGS_PROVIDER_CIRCLECItoken correctly follows the existing pattern and ensures consistent removal when CircleCI is deselected.README.md (2)
23-42: Excellent documentation improvement!The rewritten introduction significantly enhances the README by providing a comprehensive yet concise explanation of Vortex's value proposition. The new content effectively communicates the benefits of standardization, maintainability, and the complete foundation Vortex provides for Drupal projects.
46-48: Good clarification of the installation process.The updated installation description better explains the installer's functionality and the user's role in choosing which changes to commit.
tests/phpunit/Drupal/SwitchableSettingsTest.php (2)
185-185: Good documentation fix.The corrected docblock now accurately references the
testEnvironmentIndicator()method that uses this data provider.
696-700: Correct test expectation alignment.The updated test case correctly expects
'claro'as the default maintenance theme when no environment variables are set, aligning with the actual implementation behavior..vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)
8-11: Document and implement dynamicVORTEX_LOCALDEV_URL. Comments now clearly explain that the URL is derived fromCOMPOSE_PROJECT_NAME(set by Docker Compose) with a fallback toexample-site, improving transparency for local dev setups.Also applies to: 13-13
.vortex/docs/content/README.mdx (1)
17-24: Enhance README introduction. The rewritten intro offers a structured overview of Vortex’s purpose, key features (containerized environments, CI/CD, hosting integrations), and benefits for developers, improving clarity and onboarding..env (7)
4-6: Clarify variable management guidance. Comments now emphasize centralizing changes in.envand using.env.localfor overrides, which will help prevent scattered overrides.Also applies to: 9-10, 15-16
34-35: Confirm timezone default switch. ChangingTZfrom"Australia/Melbourne"to"UTC"aligns with the new standard across environments. Ensure downstream services and CI fixtures reflect this.🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
41-42: Review default Drupal profile. You’ve setDRUPAL_PROFILE=standardby default—verify this aligns with your most common project starter profiles.
86-86: Update provision docs link. The@seeURL now points directly to the Drupal provision section, improving discoverability.
102-109: Enhance DB sanitization references. Added@seeanchors for database-sanitization steps, which improves guidance on skipping sanitization and configuring email patterns.🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 109-109: [QuoteCharacter] The value has quote characters (', ")
220-221: Expand notifications channel docs. Clarified thatVORTEX_NOTIFY_CHANNELSsupports comma-separated channels (email,newrelic,github,jira), improving usability.
223-226: Detail email notification settings. Comments now specify which variables apply to email notifications and illustrate usage, aiding clarity.🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
.vortex/docs/content/drupal/README.mdx (3)
13-13: Clarify scaffold listing. The “Module scaffold” entry was simplified by removing “with tests scaffold,” making it more concise.
22-22: Emphasize setup requirement. Changed to “You would need to add…” to clearly state that modules/themes must be added after initial setup.
24-38: Refine module table and descriptions. Reformatted the table for alignment and updated module descriptions for precision (e.g., environment-based config, renamed “Valkey caching backend,” added “Stage” in examples).🧰 Tools
🪛 LanguageTool
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
tests/phpunit/Drupal/SettingsTestCase.php (2)
72-92: LGTM! Well-structured environment variable filtering.The new
ALLOWED_ENV_VARSconstant centralizes the allowed environment variable prefixes and includes comprehensive documentation. This approach improves maintainability and makes it easier for consumer sites to extend the allowed variables.
163-168: Environment variable setup improvements look good.The reordering to set
DRUPAL_PUBLIC_FILESbeforeDRUPAL_TEMPORARY_FILESand the use of the centralizedALLOWED_ENV_VARSconstant improves consistency and maintainability..vortex/docs/content/workflows/variables.mdx (3)
353-355: Excellent standardization to UTC timezone.Changing the default timezone from
Australia/MelbournetoUTCis a best practice that provides consistency across different geographical deployments and avoids timezone-related issues.
327-334: Good addition of Renovate configuration variable.The new
RENOVATE_REPOSITORIESvariable properly documents the CI configuration option for managing repositories with Renovate, aligning with modern dependency management practices.
1176-1182: Clear explanation of local development URL derivation.The updated description properly explains how
VORTEX_LOCALDEV_URLis derived fromCOMPOSE_PROJECT_NAMEand provides a realistic default value, improving developer understanding..vortex/docs/content/getting-started/architecture.mdx (2)
29-35: Excellent addition of system components diagrams.The new system components section with light/dark mode diagrams enhances the architecture documentation and provides visual clarity for understanding the system structure.
238-267: Valuable addition explaining template system.The new "Template placeholders and tokens" section provides excellent transparency into how Vortex generates customized projects. The explanation of naming placeholders and conditional tokens helps users understand the template structure and customization process.
.vortex/docs/content/drupal/theme-scaffold.mdx (3)
16-25: Excellent emphasis on flexibility and customization.The note properly sets expectations that the theme scaffold is demonstrative rather than prescriptive, acknowledging the project-specific nature of front-end development while encouraging adaptation.
29-91: Comprehensive build system documentation.The detailed explanation of the Node.js/Grunt build system, including specific commands and Ahoy integration, provides developers with clear guidance for both direct usage and containerized development. The emphasis on maintaining consistent command structures across projects is particularly valuable.
94-119: Well-structured file organization guide.The file structure documentation clearly outlines the theme's directory layout with explanatory comments, making it easy for developers to understand the organization and locate specific components.
.vortex/docs/content/drupal/provision.mdx (2)
41-44: Great improvement to the documentation structure!The replacement of the Mermaid text diagram with embedded images for dark and light modes improves accessibility and readability.
145-156: Excellent addition of example script inclusionThe integrated display of the scaffold script with the raw-loader import is a significant improvement over the previous expandable code block approach.
.vortex/docs/content/drupal/settings.mdx (1)
156-156: Correct default timezone value in documentationThe documentation states UTC as the default timezone, which is correct and aligns with the standardization across the codebase.
web/sites/default/settings.php (3)
39-39: Good addition of explicit default portAdding the explicit default port '3306' for MySQL improves clarity and prevents potential issues when the environment variable is not set.
75-77: Excellent standardization to UTC timezoneThe change from "Australia/Melbourne" to "UTC" as the default timezone is a good practice for consistency across environments.
26-46: Well-structured database configuration sectionThe database configuration using environment variables with multiple fallbacks provides excellent flexibility for different hosting providers while maintaining consistency.
tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)
307-307: Good addition of maintenance_theme assertionsThe consistent addition of
$config['maintenance_theme'] = 'claro';assertions across all environment tests properly validates the new maintenance theme setting.Also applies to: 427-427, 472-472, 521-521, 568-568, 615-615, 656-656, 697-697, 737-737, 784-784, 835-835, 886-886, 937-937
334-407: Excellent comprehensive test for environment variable overridesThis new test method thoroughly validates that all environment variables correctly override their default values, including database settings, file paths, timezone, and maintenance theme.
| if (!empty(getenv('CI'))) { | ||
| $settings['environment'] = ENVIRONMENT_CI; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Consider more robust environment variable checking.
The current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check:
-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
$settings['environment'] = ENVIRONMENT_CI;
}This ensures only truthy string values are recognized as CI environment indicators.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if (!empty(getenv('CI'))) { | |
| $settings['environment'] = ENVIRONMENT_CI; | |
| } | |
| if (getenv('CI') === 'true' || getenv('CI') === '1') { | |
| $settings['environment'] = ENVIRONMENT_CI; | |
| } |
🤖 Prompt for AI Agents
In web/sites/default/includes/providers/settings.gha.php around lines 15 to 17,
the current check for the CI environment uses !empty(getenv('CI')), which can
mistakenly treat values like "false" or "0" as true. Update the condition to
explicitly check if the getenv('CI') value is a recognized truthy string (e.g.,
"true", "1", "yes") to ensure accurate detection of the CI environment.
| if (!empty(getenv('CI'))) { | ||
| $settings['environment'] = ENVIRONMENT_CI; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Consider more robust environment variable checking.
Similar to the GitHub Actions provider file, the current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check:
-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
$settings['environment'] = ENVIRONMENT_CI;
}This ensures consistent and reliable CI environment detection across all provider files.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| if (!empty(getenv('CI'))) { | |
| $settings['environment'] = ENVIRONMENT_CI; | |
| } | |
| if (getenv('CI') === 'true' || getenv('CI') === '1') { | |
| $settings['environment'] = ENVIRONMENT_CI; | |
| } |
🤖 Prompt for AI Agents
In web/sites/default/includes/providers/settings.circleci.php around lines 15 to
17, the current check uses !empty(getenv('CI')), which can mistakenly detect the
CI environment if the CI variable is set to "false" or "0". Update the condition
to explicitly check if getenv('CI') is set to a truthy value like "true" or "1"
or use a strict comparison to avoid false positives, ensuring consistent and
reliable CI environment detection.
| set -eu | ||
| [ "${VORTEX_DEBUG-}" = "1" ] && set -x | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Consider adding -o pipefail for robustness. You’ve enabled set -eu; adding set -o pipefail will ensure errors in piped commands are caught.
🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh around lines 17 to 19, the
script uses 'set -eu' but does not include 'set -o pipefail'. To improve
robustness and ensure errors in piped commands are caught, add 'set -o pipefail'
alongside the existing set options. This will make the script fail if any
command in a pipeline fails.
| task() { printf " > %s\n" "${1}"; } | ||
| note() { printf " %s\n" "${1}"; } | ||
|
|
||
| drush() { ./vendor/bin/drush -y "$@"; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Validate drush wrapper availability. It may help to check that vendor/bin/drush exists or fall back to a globally installed Drush, e.g.:
if ! command -v ./vendor/bin/drush &>/dev/null; then
echo "Error: drush not found."; exit 1
fi🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh at line 26, the drush
wrapper function assumes the local drush binary exists without validation. Add a
check before defining the function to verify that ./vendor/bin/drush exists and
is executable; if not, either exit with an error message or fallback to a
globally installed drush command. This ensures the script fails gracefully or
uses a valid drush binary.
5588be5 to
8487081
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
♻️ Duplicate comments (20)
web/sites/default/includes/providers/settings.gha.php (1)
15-17: 🛠️ Refactor suggestionUse more robust environment variable checking for CI detection.
The current logic using
!empty(getenv('CI'))could incorrectly detect CI environment if theCIvariable is set to string values like "false" or "0". Consider using explicit truthy value checking:-if (!empty(getenv('CI'))) { +if (getenv('CI') === 'true' || getenv('CI') === '1') { $settings['environment'] = ENVIRONMENT_CI; }web/sites/default/includes/modules/settings.system.php (1)
19-27: Settings duplication needs architectural review.This file duplicates settings from
settings.automated_cron.php:
skip_permissions_hardening(lines 21 vs automated_cron line 12)system.logging error_level(lines 26 vs automated_cron line 20)This duplication creates maintenance overhead and potential conflicts.
Consider one of these approaches:
- Single responsibility: Move all system-level settings here and remove from automated_cron.php
- Hierarchical loading: Document the intended load order and precedence rules
- Shared settings file: Create a common environment settings file for shared configurations
The current approach violates the DRY principle and could lead to inconsistencies.
web/sites/default/includes/providers/settings.circleci.php (1)
15-17: Consider more robust environment variable checking.Similar to the GitHub Actions provider file, the current logic uses
!empty(getenv('CI'))which could incorrectly detect CI environment if theCIvariable is set to string values like "false" or "0". Consider using a more explicit check:-if (!empty(getenv('CI'))) { +if (getenv('CI') === 'true' || getenv('CI') === '1') { $settings['environment'] = ENVIRONMENT_CI; }This ensures consistent and reliable CI environment detection across all provider files.
web/sites/default/includes/providers/settings.container.php (1)
15-24:⚠️ Potential issueFix potential type error in environment variable handling.
The static analysis warning is valid -
getenv()can returnfalsewhen the environment variable is not set, which would cause a type error when passed tostr_replace().Apply this diff to ensure type safety:
-if (!empty(getenv('VORTEX_LOCALDEV_URL'))) { +$localdev_url = getenv('VORTEX_LOCALDEV_URL'); +if (!empty($localdev_url) && is_string($localdev_url)) { // Local development URL. $patterns = str_replace(['.', 'https://', 'http://', ','], [ '\.', '', '', '|', - ], getenv('VORTEX_LOCALDEV_URL')); + ], $localdev_url); $settings['trusted_host_patterns'][] = '^' . $patterns . '$'; // URL when accessed from Behat tests. $settings['trusted_host_patterns'][] = '^nginx$'; }🧰 Tools
🪛 PHPStan (2.1.15)
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
.vortex/docs/content/drupal/provision-example.sh (4)
17-19: 🧹 Nitpick (assertive)Add
pipefailfor Pipeline Robustness
Includeset -o pipefailalongsideset -euto catch failures in piped commands.
26-27: 🧹 Nitpick (assertive)Validate Drush Binary Existence
Consider adding a check to ensure./vendor/bin/drushis present and executable before defining the wrapper.
28-33: 🧹 Nitpick (assertive)Handle Drush Command Failures
Wrap the environment retrieval (drush php:eval) in a conditional to detect and handle bootstrap failures or empty results.
35-50: 🧹 Nitpick (assertive)Simplify Environment Check
Replace thegrep-based test with a Bashcasestatement or pattern match ([[ "$environment" =~ ^(dev|stage|ci|local)$ ]]) for readability and performance..vortex/docs/content/getting-started/architecture.mdx (1)
113-115: Fix the POSIX-compliant line break formatting issue.This formatting issue was previously identified and should be addressed.
-**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX) --compliant +**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX)-compliant.vortex/docs/content/drupal/provision.mdx (2)
99-99: “user names” → “usernames” (duplicate from previous review)
The compound noun is normally one word.🧰 Tools
🪛 LanguageTool
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4.VORT...(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...(RECOMMENDED_COMPOUNDS)
106-107: Missing comma before “such as” (duplicate from previous review)
Add a comma for correct punctuation: “…specific to your project, such as…”..vortex/docs/content/drupal/settings.mdx (3)
92-93: Wrong code-block language (still JSON, should be PHP)
Syntax highlighting is disabled for the embedded PHP example.-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock> +<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
123-124: Trim “a variety of” for conciseness (duplicate from previous review)-To support a variety of hosting providers and container platforms, +To support multiple hosting providers and container platforms,🧰 Tools
🪛 LanguageTool
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...(A_VARIETY_OF)
245-246: Second embedded sample also labelled JSON instead of PHP-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock> +<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>web/sites/default/settings.php (2)
79-81: Maintenance theme stored in$config– Drupal expects$settings
Same issue flagged earlier; still unresolved.-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro'; +$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
111-129: Constant definitions still verbose (duplicate from previous review)
Consider collapsing into a loop or a single guard to avoid repetition.tests/phpunit/Drupal/EnvironmentSettingsTest.php (4)
53-59: Comment text is still misleading for container caseThe data-provider entry is commented simply “Container.” yet maps to
ENVIRONMENT_LOCAL.
Rephrase to make the indirection explicit (e.g. “Container maps to local environment”) to avoid reader confusion.
342-366: Port 5432 +mysqldriver ‑ mismatch remains unexplainedYou keep the PostgreSQL default port (
5432) while asserting the drivermysql.
Either change to an obviously custom port (e.g.1234) or add a short comment explaining that a non-default value is used purely to exercise the override logic.
24-32: Heavy duplication still present – extract helpers for DRY testsAll test methods continue to hand-craft large, mostly identical
$configand
$settingsarrays. Introducing helper builders (e.g.getBaseSettings(),
overrideSettings()) will reduce maintenance cost and keep future changes
(one new key) to a one-liner.
382-396:⚠️ Potential issueCustom override assertions are overwritten again – test never validates them
The block beginning at line 389 re-assigns the same keys you purposely set to custom
values just a few lines above, so the final$settingsasserted by the test
contains the defaults rather than the environment-variable overrides.
Consequently the test does not verify the override behaviour it claims to cover.Apply the minimal fix – drop the second assignment block:
@@ - $settings['config_exclude_modules'] = []; - $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING; - $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml'; - $settings['entity_update_batch_size'] = 50; - $settings['environment'] = static::ENVIRONMENT_SUT; - $settings['file_public_path'] = static::PUBLIC_PATH_TESTING; - $settings['file_private_path'] = static::PRIVATE_PATH_TESTING; - $settings['file_temp_path'] = static::TMP_PATH_TESTING; - $settings['file_scan_ignore_directories'] = [ - 'node_modules', - 'bower_components', - ]; - $settings['hash_salt'] = 'custom_hash_salt'; - $settings['trusted_host_patterns'] = [ - '^localhost$', - ]; + // ❗ Keep the earlier custom values so the test really validates overrides.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (95)
.vortex/docs/static/img/diagram-dark.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-light.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-provision-dark.svgis excluded by!**/*.svg.vortex/docs/static/img/diagram-provision-light.svgis excluded by!**/*.svg.vortex/docs/static/img/installer.pngis excluded by!**/*.png.vortex/installer/tests/Fixtures/install/_baseline/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/renovate.jsonis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_artifact/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_container_image/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_minimal/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_the_empire/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_clamav/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_valkey/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_none/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (56)
.ahoy.yml(3 hunks).circleci/config.yml(3 hunks).env(6 hunks).github/workflows/build-test-deploy.yml(3 hunks).vortex/docs/.utils/variables/extra/.env.local.example.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/.env.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/ci.variables.sh(1 hunks).vortex/docs/content/README.mdx(1 hunks).vortex/docs/content/ci/README.mdx(1 hunks).vortex/docs/content/contributing/maintenance/scripts.mdx(1 hunks).vortex/docs/content/contributing/roadmap.mdx(1 hunks).vortex/docs/content/drupal/README.mdx(2 hunks).vortex/docs/content/drupal/module-scaffold.mdx(2 hunks).vortex/docs/content/drupal/provision-example.sh(1 hunks).vortex/docs/content/drupal/provision.mdx(3 hunks).vortex/docs/content/drupal/settings.mdx(3 hunks).vortex/docs/content/drupal/theme-scaffold.mdx(1 hunks).vortex/docs/content/getting-started/architecture.mdx(9 hunks).vortex/docs/content/getting-started/features.mdx(3 hunks).vortex/docs/content/getting-started/installation.mdx(2 hunks).vortex/docs/content/tools/docker.mdx(6 hunks).vortex/docs/content/tools/drush.mdx(1 hunks).vortex/docs/content/tools/rector.mdx(1 hunks).vortex/docs/content/tools/renovate.mdx(1 hunks).vortex/docs/content/workflows/notifications.mdx(1 hunks).vortex/docs/content/workflows/variables.mdx(12 hunks).vortex/docs/cspell.json(1 hunks).vortex/installer/src/Prompts/Handlers/CiProvider.php(1 hunks).vortex/installer/src/Prompts/Handlers/HostingProvider.php(3 hunks).vortex/tests/bats/_helper.bash(1 hunks).vortex/tests/bats/_helper.workflow.bash(3 hunks).vortex/tests/bats/fixtures/docker-compose.env.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_local.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_mod.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.noenv.json(7 hunks)README.md(1 hunks)docker-compose.yml(1 hunks)renovate.json(1 hunks)scripts/vortex/login.sh(1 hunks)tests/phpunit/Drupal/DatabaseSettingsTest.php(1 hunks)tests/phpunit/Drupal/EnvironmentSettingsTest.php(22 hunks)tests/phpunit/Drupal/SettingsTestCase.php(2 hunks)tests/phpunit/Drupal/SwitchableSettingsTest.php(2 hunks)web/sites/default/includes/modules/settings.automated_cron.php(1 hunks)web/sites/default/includes/modules/settings.seckit.php(1 hunks)web/sites/default/includes/modules/settings.shield.php(1 hunks)web/sites/default/includes/modules/settings.stage_file_proxy.php(1 hunks)web/sites/default/includes/modules/settings.system.php(1 hunks)web/sites/default/includes/modules/settings.ys_base.php(1 hunks)web/sites/default/includes/providers/settings.acquia.php(1 hunks)web/sites/default/includes/providers/settings.circleci.php(1 hunks)web/sites/default/includes/providers/settings.container.php(1 hunks)web/sites/default/includes/providers/settings.gha.php(1 hunks)web/sites/default/includes/providers/settings.lagoon.php(1 hunks)web/sites/default/settings.php(6 hunks)web/themes/custom/your_site_theme/js/your_site_theme.js(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
File(10-120)removeTokenAsync(93-100)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...
(YOUR)
.vortex/docs/content/drupal/README.mdx
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/provision.mdx
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...
(REP_WANT_TO_VB)
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...
(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...
(RECOMMENDED_COMPOUNDS)
[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
.vortex/docs/content/drupal/settings.mdx
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...
(A_VARIETY_OF)
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...
(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
🪛 dotenv-linter (3.3.0)
.env
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
⏰ Context from checks skipped due to timeout of 90000ms (13)
- GitHub Check: build (1)
- GitHub Check: build (0)
- GitHub Check: vortex-test-workflow (3)
- GitHub Check: vortex-test-deployment (0)
- GitHub Check: vortex-test-workflow (2)
- GitHub Check: vortex-test-workflow (0)
- GitHub Check: vortex-test-deployment (1)
- GitHub Check: vortex-test-workflow (1)
- GitHub Check: vortex-test-common
- GitHub Check: vortex-test-installer (8.3)
- GitHub Check: vortex-test-installer (8.2)
- GitHub Check: vortex-test-installer (8.4)
- GitHub Check: vortex-test-docs
🔇 Additional comments (80)
web/themes/custom/your_site_theme/js/your_site_theme.js (1)
3-3: LGTM! Spelling standardization improvement.The change from British English "behaviours" to American English "behaviors" standardizes the project's language consistency.
web/sites/default/includes/modules/settings.seckit.php (1)
10-10: Excellent improvement! Strict equality enhances type safety.Converting from loose equality (
==) to strict equality (===) is a best practice that prevents potential type coercion issues when comparing environment settings against constants.scripts/vortex/login.sh (1)
12-12: Good documentation improvement! Comment now accurately reflects functionality.The updated comment is more precise - the variable only controls unblocking admin users, not blocking, which aligns with the actual implementation in lines 27-32.
.vortex/docs/content/contributing/maintenance/scripts.mdx (1)
85-86: Nice branding consistency improvement!Adding bold formatting to "Vortex" enhances visual consistency and brand emphasis in the documentation.
.vortex/docs/content/contributing/roadmap.mdx (1)
28-28: LGTM: Enhanced branding consistency.The addition of bold formatting to "Vortex" improves documentation consistency and brand emphasis.
web/sites/default/includes/providers/settings.acquia.php (1)
8-9: LGTM: Improved comment accuracy.The update from "Acquia environments" to "provider environments" makes the comment more accurate and aligns with the file's broader purpose of mapping provider environments generally.
.vortex/docs/content/tools/rector.mdx (1)
53-53: LGTM: Enhanced branding consistency.The addition of bold formatting to "Vortex" maintains consistency with the broader documentation styling improvements.
.vortex/docs/content/tools/drush.mdx (1)
10-10: LGTM: Consistent branding improvements.The addition of bold formatting to "Vortex" in both locations aligns with the broader documentation enhancement pattern across the PR.
Also applies to: 15-15
.vortex/docs/.utils/variables/extra/ci.variables.sh (1)
69-73: AddRENOVATE_REPOSITORIESCI variable
The newRENOVATE_REPOSITORIESentry is clearly documented and aligns with the self-hosted Renovate setup..vortex/tests/bats/_helper.bash (1)
1353-1354: Standardize spelling: "behavior"
The corrected American English spelling improves consistency across comments. No functional change..vortex/docs/.utils/variables/extra/.env.variables.sh (1)
21-22: Correct US English spelling: "sanitized"
Updating the comment to "sanitized" aligns with the project's standardized spelling conventions..vortex/docs/cspell.json (1)
40-40: Include "multisite" in spell checker
Adding "multisite" to the cspell dictionary prevents false positives for that term in documentation.renovate.json (1)
14-14: Standardize Renovate timezone to UTC
Changing the timezone to UTC ensures uniformity across CI schedules and deployments.web/sites/default/includes/providers/settings.lagoon.php (1)
8-9: LGTM: Comment generalization improves clarity.The update from "Lagoon environments" to "provider environments" makes the documentation more generic and aligns with the broader refactoring to separate platform-specific logic from general environment detection.
.vortex/docs/content/workflows/notifications.mdx (1)
1-8: Work-in-progress documentation placeholder looks good.The basic structure is appropriate for a documentation file that's still under development. The frontmatter includes the necessary sidebar positioning.
.vortex/docs/content/tools/docker.mdx (2)
9-9: LGTM: Brand formatting consistency.Adding bold formatting to Vortex improves brand consistency throughout the documentation.
169-180: LGTM: Timezone standardization to UTC.The change from
Australia/MelbournetoUTCaligns with the project-wide timezone standardization effort, ensuring consistent behavior across all environments..github/workflows/build-test-deploy.yml (1)
62-62: LGTM: Consistent timezone standardization.Changing the timezone from
Australia/MelbournetoUTCacross all job containers ensures consistent behavior and follows best practices for CI/CD environments. This eliminates potential timezone-related issues in automated workflows.Also applies to: 171-171, 369-369
web/sites/default/includes/modules/settings.ys_base.php (1)
1-13: LGTM: Well-structured module settings file.The file follows best practices with strict types declaration and proper environment detection. The logic to disable mail sending in CI environments is appropriate and uses strict comparison correctly.
.vortex/docs/content/tools/renovate.mdx (1)
7-7: LGTM! Consistent branding improvement.The bold formatting of "Vortex" aligns with the broader documentation standardization effort mentioned in the AI summary.
docker-compose.yml (1)
44-44: Excellent standardization to UTC timezone.Changing from a specific regional timezone to UTC follows containerization best practices and aligns with the broader timezone standardization effort across the project.
web/sites/default/includes/modules/settings.automated_cron.php (2)
1-8: Well-structured file header and strict typing.The file follows PHP best practices with proper docblock, strict typing declaration, and clear file purpose.
10-13:✅ Verification successful
Verify environment constants are defined.
The logic correctly disables automated cron for local and CI environments, but ensure that
ENVIRONMENT_LOCALandENVIRONMENT_CIconstants are properly defined in the main settings or bootstrap files.
🏁 Script executed:
#!/bin/bash # Description: Verify environment constants are defined # Expected: Find definitions of ENVIRONMENT_LOCAL and ENVIRONMENT_CI constants rg "define.*ENVIRONMENT_(LOCAL|CI)" --type php web/sites/default/Length of output: 336
Environment constants confirmed
I’ve verified that both
ENVIRONMENT_LOCALandENVIRONMENT_CIare defined inweb/sites/default/settings.php, so the automated‐cron disabling logic is safe as is.• Definitions found in
web/sites/default/settings.php
define('ENVIRONMENT_LOCAL', 'local');define('ENVIRONMENT_CI', 'ci');.vortex/docs/content/ci/README.mdx (1)
61-62: Good typo correction improves readability.The correction from "Of" to "If" fixes the grammatical error and makes the cache fallback behavior explanation clear and correct.
web/sites/default/includes/modules/settings.stage_file_proxy.php (1)
11-11: Excellent improvement for type safety.Changing from loose inequality (
!=) to strict inequality (!==) ensures precise type and value matching for the environment comparison. This prevents potential issues where different types with the same value could be incorrectly considered equal..vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
37-37: Skipping review of fixture file per user instructions.As instructed, I'm not reviewing changes in fixture files used for testing purposes.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)
37-37: Skipping review of fixture file per user instructions.As instructed, I'm not reviewing changes in fixture files used for testing purposes.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
tests/phpunit/Drupal/DatabaseSettingsTest.php (1)
43-43: Good alignment of test data with configuration defaults.Updating the expected database port from an empty string to "3306" ensures the test data matches the explicit default port configuration used in the application. This improves test accuracy and consistency.
.vortex/tests/bats/fixtures/docker-compose.env.json (1)
37-37: Timezone standardization looks good.The consistent update of the TZ environment variable from "Australia/Melbourne" to "UTC" across all services aligns with the broader timezone standardization effort described in the summary.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)
37-37: Consistent timezone standardization maintained.The TZ environment variable updates match the changes in the companion fixture file, ensuring consistency across test fixtures.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
web/sites/default/includes/modules/settings.shield.php (2)
24-24: Excellent type safety improvement.Using strict inequality (
!==) instead of loose inequality (!=) prevents potential type coercion issues when comparing environment constants.
28-28: Consistent use of strict equality operators.The strict equality operators (
===) ensure both type and value matching, which is the correct approach for environment constant comparisons..vortex/docs/content/getting-started/installation.mdx (3)
7-9: Documentation clarity improved.The clarification that Vortex is installed "into your project's codebase" provides better context for users about what the installation process entails.
13-13: Grammar and guidance improvements.The article correction from "in" to "an" interactive installer is grammatically correct, and the additional guidance to "see relevant sections in the documentation" helps users find detailed setup instructions.
79-79: Service list appropriately streamlined.Removing "Docker Hub" from the integration list focuses on the core services that require manual setup configuration.
🧰 Tools
🪛 LanguageTool
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...(YOUR)
.vortex/tests/bats/_helper.workflow.bash (2)
214-214: Approve spelling standardization to American English.The change from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.
232-240: Approve timezone standardization to UTC.The updates to expect
TZ="UTC"and "UTC" in container outputs are consistent with the broader timezone standardization effort across the project. This ensures predictable behavior across different environments and removes dependency on Australia-specific timezones..ahoy.yml (2)
200-200: Approve yarn standardization for front-end lint commands.The switch from
npm run --prefixtoyarn run --cwdprovides consistency across all front-end tooling commands and addresses the previous review feedback about command standardization.Also applies to: 223-223
286-286: Approve spelling standardization to American English.The comment correction from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.
.vortex/docs/content/getting-started/features.mdx (1)
38-38: Approve feature documentation updates.The changes accurately reflect the current project capabilities:
- Reordering local development tools for better organization
- Adding "Gherkin Lint" as a completed tooling feature
- Adding deployment notifications and Renovate automation as completed workflow features
- Refining the database sourcing description for clarity
These updates maintain accurate documentation of the project's evolving feature set.
Also applies to: 47-47, 58-60
web/sites/default/includes/modules/settings.system.php (2)
11-11: LGTM! Good use of environment variable with fallback.The cache page max age configuration properly uses an environment variable with a sensible default value.
13-17: LGTM! Proper production optimization.CSS and JS aggregation is correctly enabled only in production environment for optimal performance.
web/sites/default/includes/providers/settings.circleci.php (1)
1-14: LGTM! Well-structured provider settings file.The file structure, documentation, and strict typing declaration follow established patterns and best practices.
.circleci/config.yml (3)
51-51: LGTM! Timezone standardization improves consistency.Setting timezone to UTC across all environments ensures consistent timestamp handling in CI operations.
73-73: LGTM! Simplified path configuration.Using the direct path
/tmp/workspace/codeinstead of the removedVORTEX_EXPORT_CODE_DIRvariable simplifies the configuration and improves clarity.
256-258: LGTM! Enhanced export step with disk usage reporting.The explicit directory creation, direct path usage, and addition of
du -shfor disk usage reporting improve transparency and debugging capabilities..vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)
43-43: LGTM! Consistent token removal for provider settings.Adding
SETTINGS_PROVIDER_*token removal alongside existingHOSTING_*tokens maintains consistency and supports the standardized provider settings approach.Also applies to: 48-48
63-63: LGTM! Complete cleanup in removal methods.The
removeAcquia()andremoveLagoon()methods now properly clean up both oldHOSTING_*and newSETTINGS_PROVIDER_*tokens, ensuring thorough cleanup during provider deselection.Also applies to: 73-73
.vortex/docs/content/drupal/module-scaffold.mdx (1)
10-12: Documentation improvements enhance clarity and structure.The updates provide clearer guidance on module usage, naming conventions, and include helpful links to related resources. The new concluding section effectively directs users to next steps.
Also applies to: 15-16, 20-21, 30-30, 32-35
.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)
61-61: Provider-specific settings cleanup logic correctly implemented.The additions properly remove provider-specific settings files and tokens when CI providers are deselected, following the established pattern for cleanup operations.
Also applies to: 63-63, 68-68, 71-71
tests/phpunit/Drupal/SwitchableSettingsTest.php (1)
185-185: Test corrections improve accuracy and align with expected behavior.The docblock correction and maintenance theme default value update properly reflect the actual system behavior where 'claro' is used as the default maintenance theme.
Also applies to: 696-696, 700-700
README.md (2)
23-40: Well-structured Introduction
The new paragraphs clearly articulate Vortex’s purpose, foundation, and maintenance model. The tone, formatting, and content align with the overall project vision.
46-48: Concise Installer Overview
The updated installation description succinctly highlights the streamlined installer flow. The wording and context are clear and match the linked installation guide..vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)
8-13: Dynamic Local Dev URL Default
DerivingVORTEX_LOCALDEV_URLfrom$COMPOSE_PROJECT_NAMEwith a fallback is a robust improvement. The added comments clearly explain its behavior..vortex/docs/content/README.mdx (1)
17-34: Refined Project Overview
The updated MDX introduction mirrors the README improvements: it’s more formal, detailed, and makes effective use of MDX markup..vortex/docs/content/drupal/provision-example.sh (2)
22-25: Helper Functions Formatting
Theinfo,task, andnotehelpers use clear, consistent formatting. No changes needed.
52-53: Finalize Operation Logging
The closinginfocall neatly wraps up the script’s flow..env (6)
4-6: Improve Comment Clarity
The new opening notes centralize environment variable control and discourage scattered overrides.
9-10: Enforce Scalar Value Rules
The added guidance on scalar-only values and quoting conventions is clear and helpful.
15-18: Document Local Customization Workflow
The instructions for.env.localand the link to variable docs are informative and well-placed.
86-86: Link to Provisioning Documentation
The new@seeURL for Drupal provisioning is accurate and maps to the updated docs.
102-109: Enhance DB Sanitization Docs
The added@seelinks forVORTEX_PROVISION_SANITIZE_DB_SKIPand the email pattern improve discoverability of the sanitization behavior.🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 109-109: [QuoteCharacter] The value has quote characters (', ")
220-225: Clarify Notification Channels & Scope
The updated descriptions forVORTEX_NOTIFY_CHANNELSand email context make the notification configuration more transparent..vortex/docs/content/drupal/README.mdx (3)
13-13: LGTM: Simplified module scaffold description.The change from "Module scaffold with tests scaffold" to "Module scaffold" removes redundancy and improves clarity.
22-22: LGTM: Improved precision with "need to add".The change from "would add" to "would need to add" better emphasizes the necessity of adding modules and themes after initial setup.
24-38: LGTM: Enhanced module descriptions and table formatting.The table reformatting improves readability, and the module descriptions are more precise and consistent. For example:
- ClamAV description is more concise
- Config Split description specifies "based on the environment"
- Environment Indicator now includes "Stage" as an example
- Shield description is clearer about access restriction
The static analysis hint about missing "the" before "Search API" appears to be a false positive - the current phrasing is grammatically correct.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
tests/phpunit/Drupal/SettingsTestCase.php (3)
48-70: LGTM: Well-organized addition of testing path constants.The addition of
CONFIG_PATH_TESTINGand reorganization of existing path constants improves test configuration management. The constants are well-documented and follow consistent naming patterns.
72-92: LGTM: Centralized environment variable filtering.The introduction of
ALLOWED_ENV_VARSconstant centralizes the prefixes for environment variables used during test setup. This improves maintainability and reduces duplication. The documentation clearly explains its purpose and provides guidance for consumer sites.
163-168: LGTM: Improved environment variable setup.The reordering of environment variable setting (placing
DRUPAL_PUBLIC_FILESbeforeDRUPAL_TEMPORARY_FILES) and use of the centralizedALLOWED_ENV_VARSconstant improves consistency and maintainability..vortex/docs/content/workflows/variables.mdx (7)
187-187: LGTM: Simplified DRUPAL_PROFILE description.The simplified description removes unnecessary complexity while maintaining clarity about the variable's purpose.
327-334: LGTM: Added RENOVATE_REPOSITORIES variable.The new environment variable is well-documented with clear description and proper categorization under CI config. This supports automated dependency management functionality.
353-355: LGTM: Timezone standardization to UTC.The change from
Australia/MelbournetoUTCaligns with the project's timezone standardization efforts mentioned in the AI summary, improving consistency across environments.
533-534: LGTM: Clarified database-related variable descriptions.The enhanced descriptions for
VORTEX_DB_DIRandVORTEX_DB_FILEbetter explain their roles in database import/export operations.Also applies to: 757-758
566-567: LGTM: Spelling corrections.Fixed "sanitised" to "sanitized" for American English consistency.
Also applies to: 574-575
1176-1182: LGTM: Improved VORTEX_LOCALDEV_URL description.The enhanced description clearly explains the relationship with
COMPOSE_PROJECT_NAMEand provides better guidance for usage.
1198-1199: LGTM: Added email notification clarifications.The additions of "Applies to email notifications" help clarify the scope of these notification-related variables.
Also applies to: 1214-1217, 1242-1243
.vortex/docs/content/getting-started/architecture.mdx (4)
12-16: LGTM: Enhanced introduction to architecture.The added content provides a clear introduction explaining the purpose of the architecture documentation and sets appropriate expectations for readers.
29-35: LGTM: Added system components section with diagrams.The new section with visual diagrams enhances understanding of the system architecture. The use of theme-aware images (dark/light mode) improves user experience.
62-62: LGTM: Updated repository structure.The changes reflect current structure:
- "test" renamed to "stage" in config directory
- Added "recipes" directory
These updates keep the documentation accurate.
Also applies to: 70-70
237-268: LGTM: Comprehensive new section on template placeholders and tokens.The new section provides valuable information about how Vortex generates customized projects while maintaining transparency. The explanation of naming placeholders and conditional tokens, including syntax examples for different file types, will help users understand the template system.
| These commands run within the docker container to use the Node.js environment | ||
| and tools installed there, ensuring consistency across development environments. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Capitalize “Docker” and clarify container scope
Tiny wording tweak keeps docs consistent with earlier references to Docker and avoids the ambiguous “the docker container” (which one?).
-These commands run within the docker container to use the Node.js environment
-and tools installed there, ensuring consistency across development environments.
+These commands run inside the project’s **Docker** container, using the Node.js
+environment and tools installed there to ensure consistency across development
+environments.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| These commands run within the docker container to use the Node.js environment | |
| and tools installed there, ensuring consistency across development environments. | |
| These commands run inside the project’s **Docker** container, using the Node.js | |
| environment and tools installed there to ensure consistency across development | |
| environments. |
🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/theme-scaffold.mdx around lines 81 to 83,
capitalize "Docker" to maintain consistency with earlier references and replace
"the docker container" with a clearer phrase specifying which container or
environment is meant, such as "the Docker container" or "the Docker development
container," to avoid ambiguity.
| // Salt is taken from DRUPAL_HASH_SALT or the database host name. | ||
| $settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']); | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hash salt derivation is predictable — generate cryptographically-random fallback
Deriving $settings['hash_salt'] from the DB host is insufficient; identical hosts across environments yield identical salts, weakening security (e.g. cookie spoofing).
-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']);
+$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));This keeps the env-override behaviour while providing a strong default.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In web/sites/default/settings.php around lines 72 to 74, the fallback for
$settings['hash_salt'] is derived from the database host, which is predictable
and weakens security. Modify the fallback to generate a cryptographically secure
random string instead of hashing the host. Retain the getenv('DRUPAL_HASH_SALT')
override but replace the fallback with a secure random value to ensure unique,
strong salts across environments.
8487081 to
20fbf88
Compare
20fbf88 to
8781574
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Caution
Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.
Actionable comments posted: 6
♻️ Duplicate comments (21)
.env (2)
34-35: Standardizing timezone to UTC is correct.This change aligns with the broader effort to standardize timezone settings across all environments as mentioned in the AI summary.
🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
226-226: Remove unnecessary quotes around email value.As noted in previous reviews, values without spaces don't require quoting in dotenv files.
🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
.vortex/docs/content/workflows/notifications.mdx (1)
1-3: 🛠️ Refactor suggestionInclude
sidebar_labelmetadata for sidebar navigation
The frontmatter is missingsidebar_label: Notifications, which is required for proper placement in the documentation sidebar.Apply this diff:
--- -sidebar_position: 4 +sidebar_label: Notifications +sidebar_position: 4 ---.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
37-37: Timezone standardization to UTC is good, but implementation is incomplete.The standardization from "Australia/Melbourne" to "UTC" across services improves consistency and avoids timezone-related issues in testing environments.
However, based on previous review feedback, the
valkeyandwait_dependenciesservices are still missing theTZenvironment variable entirely, which should be added for consistency.Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
web/sites/default/includes/providers/settings.gha.php (1)
15-17:⚠️ Potential issueFix environment variable detection to prevent false positives.
The current logic using
!empty(getenv('CI'))could incorrectly detect CI environment if theCIvariable is set to string values like "false" or "0".Apply this fix to ensure only truthy string values are recognized:
-if (!empty(getenv('CI'))) { +if (getenv('CI') === 'true' || getenv('CI') === '1') { $settings['environment'] = ENVIRONMENT_CI; }web/sites/default/includes/modules/settings.system.php (1)
19-27: 🛠️ Refactor suggestionAddress settings duplication to improve maintainability.
This file duplicates settings from
settings.automated_cron.php:
skip_permissions_hardening(line 21)system.logging error_level(line 26)This duplication creates maintenance overhead and potential conflicts, violating the DRY principle.
Consider one of these architectural approaches:
- Single responsibility: Consolidate all system-level settings here and remove from automated_cron.php
- Hierarchical loading: Document the intended load order and precedence rules
- Shared settings file: Create a common environment settings file for shared configurations
web/sites/default/includes/providers/settings.circleci.php (1)
15-17: Ensure reliable CI environment detectionThe current check
!empty(getenv('CI'))treats"false"or"0"as truthy. Consider explicitly matching expected values to avoid false positives:-if (!empty(getenv('CI'))) { +if (getenv('CI') === 'true' || getenv('CI') === '1') {web/sites/default/includes/providers/settings.container.php (1)
15-24:⚠️ Potential issueFix potential type error in environment variable handling.
This is the same issue identified in previous reviews -
getenv()can returnfalsewhen the environment variable is not set, causing a type error when passed tostr_replace().Apply the previously suggested fix:
-if (!empty(getenv('VORTEX_LOCALDEV_URL'))) { +$localdev_url = getenv('VORTEX_LOCALDEV_URL'); +if (!empty($localdev_url) && is_string($localdev_url)) { // Local development URL. $patterns = str_replace(['.', 'https://', 'http://', ','], [ '\.', '', '', '|', - ], getenv('VORTEX_LOCALDEV_URL')); + ], $localdev_url); $settings['trusted_host_patterns'][] = '^' . $patterns . '$'; // URL when accessed from Behat tests. $settings['trusted_host_patterns'][] = '^nginx$'; }🧰 Tools
🪛 PHPStan (2.1.15)
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
.vortex/docs/content/drupal/provision-example.sh (5)
15-15: Remove unnecessary ShellCheck directive.The
shellcheck disable=SC2086directive appears unnecessary since variables are properly quoted throughout the script.
17-18: Add pipefail for robustness.Consider adding
set -o pipefailto ensure errors in piped commands are caught, improving script robustness.
26-26: Validate drush wrapper availability.The drush wrapper assumes the local drush binary exists without validation. Consider adding a check to verify
./vendor/bin/drushexists and is executable.
30-32: Add error handling for environment detection.The drush command lacks error handling if Drupal isn't properly bootstrapped or the settings value isn't available.
35-35: Simplify environment matching.The current approach with
echoandgrepcould be simplified using bash pattern matching or a case statement for better readability and efficiency..vortex/docs/content/getting-started/architecture.mdx (1)
113-114: Fix formatting of “POSIX-compliant”
Combine “POSIX” and “-compliant” on one line to avoid breaking the hyphen.web/sites/default/settings.php (3)
80-80:⚠️ Potential issue
$config['maintenance_theme']is ignored – use$settings['maintenance_theme']Drupal reads the maintenance theme from $settings, not $config.
Current code leaves maintenance mode theme unchanged.Apply this diff to fix the issue:
-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro'; +$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
73-73:⚠️ Potential issueHash salt derivation is predictable — generate cryptographically-random fallback
Deriving
$settings['hash_salt']from the DB host is insufficient; identical hosts across environments yield identical salts, weakening security (e.g. cookie spoofing).Apply this diff to provide a strong default:
-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']); +$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));
114-129: 🧹 Nitpick (assertive)Consider consolidating constant definitions
You already guard each define individually, but grouping them reduces duplication.
Apply this diff to make the code more concise:
-// @codeCoverageIgnoreStart -if (!defined('ENVIRONMENT_LOCAL')) { - define('ENVIRONMENT_LOCAL', 'local'); -} -if (!defined('ENVIRONMENT_CI')) { - define('ENVIRONMENT_CI', 'ci'); -} -if (!defined('ENVIRONMENT_DEV')) { - define('ENVIRONMENT_DEV', 'dev'); -} -if (!defined('ENVIRONMENT_STAGE')) { - define('ENVIRONMENT_STAGE', 'stage'); -} -if (!defined('ENVIRONMENT_PROD')) { - define('ENVIRONMENT_PROD', 'prod'); -} -// @codeCoverageIgnoreEnd +// @codeCoverageIgnoreStart +$constants = [ + 'ENVIRONMENT_LOCAL' => 'local', + 'ENVIRONMENT_CI' => 'ci', + 'ENVIRONMENT_DEV' => 'dev', + 'ENVIRONMENT_STAGE' => 'stage', + 'ENVIRONMENT_PROD' => 'prod', +]; +foreach ($constants as $name => $value) { + if (!defined($name)) { + define($name, $value); + } +} +// @codeCoverageIgnoreEndtests/phpunit/Drupal/EnvironmentSettingsTest.php (4)
295-966: 🧹 Nitpick (assertive)Consider extracting helper methods to reduce duplication
Every test method manually assembles large
$configand$settingsarrays that differ only in a few keys. This makes the test file unnecessarily long and maintenance-prone.Consider creating helper methods:
private function getBaseConfig(): array { return [ 'environment_indicator.settings' => [ 'favicon' => TRUE, 'toolbar_integration' => [TRUE], ], 'maintenance_theme' => 'claro', 'system.performance' => [ 'cache' => ['page' => ['max_age' => 900]], ], ]; } private function getBaseSettings(): array { return [ 'config_exclude_modules' => [], 'config_sync_directory' => static::CONFIG_PATH_TESTING, 'container_yamls' => [$this->app_root . '/' . $this->site_path . '/services.yml'], 'entity_update_batch_size' => 50, 'file_public_path' => static::PUBLIC_PATH_TESTING, 'file_private_path' => static::PRIVATE_PATH_TESTING, 'file_temp_path' => static::TMP_PATH_TESTING, 'file_scan_ignore_directories' => ['node_modules', 'bower_components'], 'hash_salt' => hash('sha256', getenv('DATABASE_HOST') ?: 'localhost'), 'trusted_host_patterns' => ['^localhost$'], ]; } private function mergeConfig(array $base, array $overrides): array { return array_merge($base, $overrides); }Then each test could be simplified to only specify differences:
public function testEnvironmentLocal(): void { // ... setup ... $config = $this->mergeConfig($this->getBaseConfig(), [ 'automated_cron.settings' => ['interval' => 0], 'config_split.config_split.local' => ['status' => TRUE], 'shield.settings' => ['shield_enable' => FALSE], // ... other local-specific config ]); $this->assertConfig($config); $settings = $this->mergeConfig($this->getBaseSettings(), [ 'environment' => static::ENVIRONMENT_LOCAL, 'skip_permissions_hardening' => TRUE, ]); $this->assertSettings($settings); }
53-59: 🧹 Nitpick (assertive)Container case returns
LOCAL– clarify intentThe comment says "Container." which implies a distinct container environment, yet the expected result is
static::ENVIRONMENT_LOCAL. This is misleading for future readers.Apply this diff to clarify the intent:
- // Container. + // Container maps to local environment.
383-406:⚠️ Potential issueCustom-override assertions are overwritten
You correctly set custom override paths at lines 383-388, but then immediately overwrite the same keys with default values at lines 390-396. This prevents the test from verifying the override behavior.
Remove the duplicate assignments that overwrite the custom values:
$settings['file_private_path'] = 'custom_private'; $settings['file_temp_path'] = 'custom_temp'; $settings['config_exclude_modules'] = []; - $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING; $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml'; $settings['entity_update_batch_size'] = 50; $settings['environment'] = static::ENVIRONMENT_SUT; - $settings['file_public_path'] = static::PUBLIC_PATH_TESTING; - $settings['file_private_path'] = static::PRIVATE_PATH_TESTING; - $settings['file_temp_path'] = static::TMP_PATH_TESTING; $settings['file_scan_ignore_directories'] = [
340-342: 🧹 Nitpick (assertive)Port 5432 with MySQL driver may confuse readers
The test sets
DATABASE_PORTto5432(PostgreSQL's default) while keeping driver asmysql. While this tests the override functionality, it could mislead future readers.Add a comment to clarify the intent:
'DATABASE_PASSWORD' => 'custom_pass', 'DATABASE_HOST' => 'custom_host', + // Use a non-default port (MySQL's default is 3306) to verify the override. 'DATABASE_PORT' => '5432',Also applies to: 364-364
🛑 Comments failed to post (6)
.circleci/config.yml (1)
255-259: 🧹 Nitpick (assertive)
Enhance visibility and remove redundancy
Adding
du -shprovides insight into the export size. Note thatmkdir -p "/tmp/workspace/code"is already executed instep_process_codebase_for_ci; you can remove this duplicate if preferred.🤖 Prompt for AI Agents
In .circleci/config.yml around lines 255 to 259, the mkdir command is redundant because the directory is already created in a previous step. Remove the mkdir -p "/tmp/workspace/code" line to eliminate duplication, and keep the du -sh command to maintain visibility into the export size..vortex/docs/content/drupal/module-scaffold.mdx (1)
20-22: 🧹 Nitpick (assertive)
Use version-agnostic deployment file link
The hard-coded
developbranch in the URL may become stale. Consider using a relative path or linking to the default branch (e.g.,/blob/main/…) to ensure permanence.🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/module-scaffold.mdx around lines 20 to 22, the URL to ys_base.deploy.php uses a hard-coded 'develop' branch which may become outdated. Update the link to use a version-agnostic path by replacing 'develop' with 'main' or use a relative path to the file to ensure the link remains valid regardless of branch changes..vortex/docs/content/getting-started/architecture.mdx (2)
19-20:
⚠️ Potential issueFix line break in Zen section
The bold “Vortex” is split across lines—merge into one line to restore proper formatting.🤖 Prompt for AI Agents
In .vortex/docs/content/getting-started/architecture.mdx around lines 19 to 20, the bold text "**Vortex**" is split across two lines, breaking the formatting. Merge the split parts into a single line so that "**Vortex**" appears as one continuous bolded word without line breaks.
184-184: 🧹 Nitpick (assertive)
Correct router scripts grammar
Change “router script” to “router scripts” (plural) or “a router script” for clarity.🤖 Prompt for AI Agents
In .vortex/docs/content/getting-started/architecture.mdx at line 184, the phrase "_router_ script" should be corrected for grammatical clarity. Change it to either "_router_ scripts" if referring to multiple scripts or "a _router_ script" if referring to a single script, depending on the intended meaning..vortex/docs/content/drupal/theme-scaffold.mdx (1)
81-82: 🧹 Nitpick (assertive)
Capitalize and clarify Docker container reference
Use “Docker” with uppercase and consider “project’s Docker container” for scope.🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/theme-scaffold.mdx around lines 81 to 82, update the text to capitalize "Docker" and clarify the reference by changing it to "project’s Docker container" to specify the scope and improve clarity..vortex/docs/content/drupal/settings.mdx (1)
87-92: 🧹 Nitpick (assertive)
Correct code block language
The example import is PHP—changelanguage="json"tolanguage="php"for proper highlighting.🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/settings.mdx around lines 87 to 92, the code block language is incorrectly set to "json" for a PHP file example. Change the CodeBlock component's language attribute from "json" to "php" to enable proper syntax highlighting for the imported PHP settings example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
♻️ Duplicate comments (24)
.vortex/docs/content/workflows/notifications.mdx (1)
1-3: Add missing sidebar_label metadataThe frontmatter is missing the
sidebar_labelmetadata required for proper sidebar display.Apply this diff:
--- +sidebar_label: Notifications sidebar_position: 4 ---.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
413-422: Missing TZ environment variables for valkey and wait_dependencies services.The valkey and wait_dependencies services still lack the "TZ": "UTC" environment variable that other services have. This was previously identified and should be addressed for consistency.
Also applies to: 424-451
web/sites/default/includes/providers/settings.gha.php (1)
15-17: Consider more robust environment variable checking.The current logic uses
!empty(getenv('CI'))which could incorrectly detect CI environment if theCIvariable is set to string values like "false" or "0". Consider using a more explicit check:-if (!empty(getenv('CI'))) { +if (getenv('CI') === 'true' || getenv('CI') === '1') { $settings['environment'] = ENVIRONMENT_CI; }This ensures only truthy string values are recognized as CI environment indicators.
web/sites/default/includes/modules/settings.system.php (1)
19-27: Settings duplication needs architectural review.This file duplicates settings from
settings.automated_cron.php:
skip_permissions_hardening(lines 21 vs automated_cron line 12)system.logging error_level(lines 26 vs automated_cron line 20)This duplication creates maintenance overhead and potential conflicts.
Consider one of these approaches:
- Single responsibility: Move all system-level settings here and remove from automated_cron.php
- Hierarchical loading: Document the intended load order and precedence rules
- Shared settings file: Create a common environment settings file for shared configurations
The current approach violates the DRY principle and could lead to inconsistencies.
web/sites/default/includes/providers/settings.circleci.php (1)
15-17: Consider more robust environment variable checking.Similar to past reviews, the current logic uses
!empty(getenv('CI'))which could incorrectly detect CI environment if theCIvariable is set to string values like "false" or "0". Consider using a more explicit check for consistent and reliable CI environment detection across all provider files.web/sites/default/includes/providers/settings.container.php (1)
15-24:⚠️ Potential issueEnsure Safe Handling of
getenv()
PHPStan correctly flags thatgetenv()may returnfalse, causing a type error instr_replace(). Assign the environment variable to a local variable and verify it's a non-empty string before use.Apply this diff:
-$localdev_url = getenv('VORTEX_LOCALDEV_URL'); -if (!empty(getenv('VORTEX_LOCALDEV_URL'))) { - // Local development URL. - $patterns = str_replace(['.', 'https://', 'http://', ','], [ - '\.', '', '', '|', - ], getenv('VORTEX_LOCALDEV_URL')); + $localdev_url = getenv('VORTEX_LOCALDEV_URL'); +if (!empty($localdev_url) && is_string($localdev_url)) { + // Local development URL. + $patterns = str_replace( + ['.', 'https://', 'http://', ','], + ['\.', '', '', '|'], + $localdev_url + ); $settings['trusted_host_patterns'][] = '^' . $patterns . '$'; // URL when accessed from Behat tests. $settings['trusted_host_patterns'][] = '^nginx$'; }🧰 Tools
🪛 PHPStan (2.1.15)
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
.vortex/docs/content/drupal/provision-example.sh (5)
15-15: Remove unnecessary shellcheck disable directive.The
shellcheck disable=SC2086directive is unnecessary since variables in this script are properly quoted.
17-18: Add-o pipefailfor robust error handling.You've enabled
set -eu; addingset -o pipefailwill ensure errors in piped commands are caught.
26-26: Validate drush wrapper availability.The drush wrapper function assumes the local drush binary exists without validation. Add a check to verify that
./vendor/bin/drushexists and is executable.
30-32: Add error handling for environment detection.The drush command approach is appropriate, but consider adding error handling in case Drupal isn't properly bootstrapped or the settings value isn't available.
35-35: Simplify environment matching.The current approach with
echoandgrepworks but could be simplified using a case statement or bash pattern matching for better readability and efficiency..env (2)
35-35: Remove unnecessary quotes around UTC.Since there are no spaces in the value, you can remove the quotes for consistency:
-TZ="UTC" +TZ=UTC🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
226-226: Remove unnecessary quotes around email address.Values without spaces don't require quoting in dotenv files:
-VORTEX_NOTIFY_EMAIL_FROM="webmaster@your-site-domain.example" +VORTEX_NOTIFY_EMAIL_FROM=webmaster@your-site-domain.example🧰 Tools
🪛 dotenv-linter (3.3.0)
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
.vortex/docs/content/getting-started/architecture.mdx (1)
113-114: Previous formatting issue with POSIX-compliant has been resolved.The line break that previously separated "POSIX" and "-compliant" has been fixed, improving readability as requested in past reviews.
.vortex/docs/content/drupal/theme-scaffold.mdx (1)
81-82: Capitalize "Docker" and clarify container scopeThe phrase "docker container" should maintain consistent capitalization and be more specific about which container is referenced.
-These commands run within the docker container to use the Node.js environment +These commands run inside the project's **Docker** container, using the Node.js environment.vortex/docs/content/drupal/provision.mdx (2)
99-99: 🧹 Nitpick (assertive)Fix grammar issues in database sanitization section.
Multiple grammatical improvements needed based on static analysis feedback.
-3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> +3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize usernames.<br/><br/>🧰 Tools
🪛 LanguageTool
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4.VORT...(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...(RECOMMENDED_COMPOUNDS)
105-105: 🧹 Nitpick (assertive)Add missing comma for clarity.
A comma is needed before "such as" to improve sentence structure.
-project such as conditionally enabling modules or running migrations in a +project, such as conditionally enabling modules or running migrations in a🧰 Tools
🪛 LanguageTool
[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
.vortex/docs/content/drupal/settings.mdx (1)
92-92: Fix incorrect code block language for PHP content.The imported PHP file is incorrectly marked as JSON, which prevents proper syntax highlighting.
-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock> +<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>web/sites/default/settings.php (3)
111-129: Repeateddefined()guards – see prior reviewThe individual constant guards are still duplicated; grouping them in a loop was suggested previously.
72-74:⚠️ Potential issueFallback hash-salt is predictable – use a cryptographically-secure value
Hashing the DB host produces identical salts across installs that share the same host, weakening HMAC / cookie protection.
-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']); +$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));
79-81:⚠️ Potential issue
maintenance_thememust live in $settings, not $configDrupal only reads
$settings['maintenance_theme']. The current line silently does nothing.-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro'; +$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';tests/phpunit/Drupal/EnvironmentSettingsTest.php (3)
53-59: Comment still vague – container maps to LOCALPrevious nitpick remains; clarify that container URLs resolve to the local tier.
342-344: Port 5432 with MySQL driver – add explanatory comment or choose a neutral portThe mismatch is intentional for override testing, but it can confuse readers. Either add a comment or use an obviously custom port such as
1234.
389-404:⚠️ Potential issueCustom-override assertions are overwritten – test never validates overrides
After building
$settingswith the custom paths you immediately reset them to the default testing constants, nullifying the purpose of the test.- $settings['config_exclude_modules'] = []; - $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING; - ... - $settings['file_public_path'] = static::PUBLIC_PATH_TESTING; - $settings['file_private_path'] = static::PRIVATE_PATH_TESTING; - $settings['file_temp_path'] = static::TMP_PATH_TESTING; + // base settings are already asserted elsewhere; + // keep only override values to verify env-var precedence.Delete the duplicated block or merge intelligently so the custom values survive.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (96)
.vortex/docs/static/img/diagram-dark.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-light.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-provision-dark.svgis excluded by!**/*.svg.vortex/docs/static/img/diagram-provision-light.svgis excluded by!**/*.svg.vortex/docs/static/img/installer.pngis excluded by!**/*.png.vortex/installer/tests/Fixtures/install/_baseline/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/renovate.jsonis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_artifact/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_container_image/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/-settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.the_force_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_minimal/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_the_empire/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_clamav/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_valkey/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_none/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (57)
.ahoy.yml(3 hunks).circleci/config.yml(3 hunks).env(6 hunks).github/workflows/build-test-deploy.yml(3 hunks).vortex/docs/.utils/variables/extra/.env.local.example.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/.env.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/ci.variables.sh(1 hunks).vortex/docs/content/README.mdx(1 hunks).vortex/docs/content/ci/README.mdx(1 hunks).vortex/docs/content/contributing/maintenance/scripts.mdx(1 hunks).vortex/docs/content/contributing/roadmap.mdx(1 hunks).vortex/docs/content/drupal/README.mdx(2 hunks).vortex/docs/content/drupal/module-scaffold.mdx(2 hunks).vortex/docs/content/drupal/provision-example.sh(1 hunks).vortex/docs/content/drupal/provision.mdx(3 hunks).vortex/docs/content/drupal/settings.mdx(3 hunks).vortex/docs/content/drupal/theme-scaffold.mdx(1 hunks).vortex/docs/content/getting-started/architecture.mdx(9 hunks).vortex/docs/content/getting-started/features.mdx(3 hunks).vortex/docs/content/getting-started/installation.mdx(2 hunks).vortex/docs/content/tools/docker.mdx(6 hunks).vortex/docs/content/tools/drush.mdx(1 hunks).vortex/docs/content/tools/rector.mdx(1 hunks).vortex/docs/content/tools/renovate.mdx(1 hunks).vortex/docs/content/workflows/notifications.mdx(1 hunks).vortex/docs/content/workflows/variables.mdx(12 hunks).vortex/docs/cspell.json(1 hunks).vortex/installer/src/Prompts/Handlers/CiProvider.php(1 hunks).vortex/installer/src/Prompts/Handlers/HostingProvider.php(3 hunks).vortex/installer/src/Prompts/Handlers/ModulePrefix.php(1 hunks).vortex/tests/bats/_helper.bash(1 hunks).vortex/tests/bats/_helper.workflow.bash(3 hunks).vortex/tests/bats/fixtures/docker-compose.env.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_local.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_mod.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.noenv.json(7 hunks)README.md(1 hunks)docker-compose.yml(1 hunks)renovate.json(1 hunks)scripts/vortex/login.sh(1 hunks)tests/phpunit/Drupal/DatabaseSettingsTest.php(1 hunks)tests/phpunit/Drupal/EnvironmentSettingsTest.php(22 hunks)tests/phpunit/Drupal/SettingsTestCase.php(2 hunks)tests/phpunit/Drupal/SwitchableSettingsTest.php(2 hunks)web/sites/default/includes/modules/settings.automated_cron.php(1 hunks)web/sites/default/includes/modules/settings.seckit.php(1 hunks)web/sites/default/includes/modules/settings.shield.php(1 hunks)web/sites/default/includes/modules/settings.stage_file_proxy.php(1 hunks)web/sites/default/includes/modules/settings.system.php(1 hunks)web/sites/default/includes/modules/settings.ys_base.php(1 hunks)web/sites/default/includes/providers/settings.acquia.php(1 hunks)web/sites/default/includes/providers/settings.circleci.php(1 hunks)web/sites/default/includes/providers/settings.container.php(1 hunks)web/sites/default/includes/providers/settings.gha.php(1 hunks)web/sites/default/includes/providers/settings.lagoon.php(1 hunks)web/sites/default/settings.php(6 hunks)web/themes/custom/your_site_theme/js/your_site_theme.js(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (3)
.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)
.vortex/installer/src/Utils/File.php (1)
File(10-120)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
File(10-120)removeTokenAsync(93-100)
.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
File(10-120)removeTokenAsync(93-100)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...
(YOUR)
.vortex/docs/content/drupal/README.mdx
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/provision.mdx
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...
(REP_WANT_TO_VB)
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...
(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...
(RECOMMENDED_COMPOUNDS)
[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...
(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
.vortex/docs/content/drupal/settings.mdx
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...
(A_VARIETY_OF)
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...
(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
🪛 dotenv-linter (3.3.0)
.env
[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")
[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")
⏰ Context from checks skipped due to timeout of 90000ms (8)
- GitHub Check: build (0)
- GitHub Check: build (1)
- GitHub Check: vortex-test-workflow (3)
- GitHub Check: vortex-test-workflow (2)
- GitHub Check: vortex-test-workflow (0)
- GitHub Check: vortex-test-workflow (1)
- GitHub Check: vortex-test-deployment (0)
- GitHub Check: vortex-test-deployment (1)
🔇 Additional comments (85)
.github/workflows/build-test-deploy.yml (3)
61-63: CI timezone standardized to UTC. You've replaced Australia/Melbourne with UTC for thedatabasejob container environment. This aligns with repository-wide timezone settings and avoids time-based discrepancies.
170-173: CI timezone standardized to UTC. Thebuildjob container is now set to UTC. Consistency across CI workloads will prevent timezone-related issues.
368-372: CI timezone standardized to UTC. Updated thedeployjob container timezone to UTC. Good for uniform timing in logs and scheduled runs..vortex/docs/content/contributing/maintenance/scripts.mdx (1)
85-87: Documentation styling: emphasize "Vortex". The added bold formatting around "Vortex" aligns with the established branding and emphasis conventions in other docs..vortex/docs/content/contributing/roadmap.mdx (1)
27-29: Documentation styling: emphasize "Vortex". The bold formatting on "Vortex" enhances branding consistency across documentation.🧰 Tools
🪛 LanguageTool
[style] ~27-~27: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... for Cypress and Drupal Test Traits. 2. Adding support for Visual Regression and Acces...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
.vortex/docs/content/ci/README.mdx (1)
61-63: Typo fix: "If" instead of "Of". The correction improves the clarity of the fallback cache description..vortex/docs/.utils/variables/extra/ci.variables.sh (1)
69-73: Introduce RENOVATE_REPOSITORIES variable. AddingRENOVATE_REPOSITORIESsupports self-hosted Renovate configuration. Ensure this aligns with the documented default (UNDEFINED) and usage in.vortex/docs/content/workflows/variables.mdx..vortex/docs/.utils/variables/extra/.env.variables.sh (1)
21-21: LGTM: Spelling standardizationGood correction to standardize on American English spelling ("sanitized" vs "sanitised").
.vortex/tests/bats/_helper.bash (1)
1354-1354: LGTM: Spelling standardizationGood correction to standardize on American English spelling ("behavior" vs "behaviour").
web/themes/custom/your_site_theme/js/your_site_theme.js (1)
3-3: LGTM: Spelling standardizationGood correction to standardize on American English spelling ("behaviors" vs "behaviours").
.vortex/docs/cspell.json (1)
40-40: LGTM: Dictionary updateGood addition of "multisite" to the spell checker dictionary as it's a legitimate Drupal technical term.
renovate.json (1)
14-14: LGTM: Standardizing to UTC timezoneThis change aligns with timezone standardization across the project and follows best practices for CI/CD systems by using UTC to avoid timezone-related confusion.
web/sites/default/includes/modules/settings.seckit.php (1)
10-10: LGTM: Improved type safety with strict equalityThe change from loose (
==) to strict (===) equality enhances type safety and aligns with the file'sstrict_types=1declaration. This ensures exact type and value matching for environment constants.web/sites/default/includes/providers/settings.lagoon.php (1)
8-9: LGTM: Improved comment clarityThe updated comment better describes the file's purpose by using the more generic "provider environments" instead of "Lagoon environments", making it consistent with other provider files.
.vortex/docs/content/tools/docker.mdx (2)
9-9: LGTM! Documentation formatting improvements enhance brand visibility.The consistent bolding of "Vortex" throughout the documentation improves brand emphasis and visual consistency.
Also applies to: 77-77, 93-93, 150-150
169-169: Excellent timezone standardization to UTC.Changing the default timezone from
Australia/MelbournetoUTCprovides a more neutral, globally-appropriate default. This aligns with the broader timezone standardization effort across the project.Also applies to: 178-179
web/sites/default/includes/modules/settings.ys_base.php (1)
1-13: Well-structured module settings file with proper practices.This file demonstrates good practices:
- Strict typing declaration
- Proper docblock documentation
- Strict comparison operator (===) as recommended in previous reviews
- Clear, environment-specific configuration
The mail suspension in CI environments is appropriate for preventing accidental email sends during testing.
.vortex/docs/content/tools/renovate.mdx (1)
7-7: Consistent documentation formatting improvement.The bolding of "Vortex" maintains consistency with similar changes across the documentation files.
docker-compose.yml (1)
44-44: Excellent timezone standardization across container environments.Changing the default timezone to UTC provides a consistent, globally-neutral default for all containers. This aligns perfectly with the broader timezone standardization effort documented in the AI summary.
web/sites/default/includes/modules/settings.automated_cron.php (1)
1-13: Well-implemented automated cron settings with best practices.This file demonstrates excellent practices:
- Strict typing declaration
- Proper file documentation
- Strict comparison operators (===) addressing previous review feedback
- Appropriate environment-specific logic
Disabling automated cron in local and CI environments is the correct approach, as these environments typically use external cron management.
web/sites/default/includes/providers/settings.acquia.php (1)
8-9: LGTM! Documentation improvement for consistency.The update from "Acquia environments" to "provider environments" makes the comment more generic and aligns with the broader refactoring to standardize provider environment mapping across different hosting providers.
.vortex/docs/content/tools/rector.mdx (1)
53-53: LGTM! Consistent formatting enhancement.Adding bold formatting to "Vortex" improves visual consistency across documentation files and provides appropriate emphasis for the project name.
web/sites/default/includes/modules/settings.stage_file_proxy.php (1)
11-11: Excellent! Improved type safety with strict comparison.Changing from
!=to!==ensures both value and type are compared when checking the environment setting. This prevents potential issues with type coercion and aligns with PHP best practices for more reliable environment detection logic..vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
37-37: LGTM! Timezone standardization to UTC.The consistent update of timezone settings from "Australia/Melbourne" to "UTC" across all services improves standardization and aligns with the broader project effort to use UTC as the default timezone.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)
1-465: Skipping fixture file review per user instructions.This file is in the fixtures directory and should not be reviewed as per your guidance that fixture files are used for testing purposes and may contain intentionally incomplete or invalid data.
.vortex/docs/content/tools/drush.mdx (1)
10-11: Documentation styling improvements look good.The consistent bolding of Vortex throughout the documentation enhances branding and readability. This aligns well with maintaining consistent documentation standards.
Also applies to: 15-16
.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)
1-465: Skipping fixture file review per user instructions.This file is in the fixtures directory and should not be reviewed as per your guidance that fixture files are used for testing purposes and may contain intentionally incomplete or invalid data.
.vortex/tests/bats/fixtures/docker-compose.env.json (1)
1-465: Skipping fixture file review per user instructions.This file is in the fixtures directory and should not be reviewed as per your guidance that fixture files are used for testing purposes and may contain intentionally incomplete or invalid data.
tests/phpunit/Drupal/DatabaseSettingsTest.php (1)
43-43: Good test update to reflect accurate defaults.The change from an empty string to "3306" correctly aligns the test expectations with the actual default MySQL port, ensuring the tests accurately reflect the updated default database configuration.
web/sites/default/includes/modules/settings.shield.php (2)
24-24: Excellent use of strict equality operator!The change from
!=to!==improves type safety and prevents potential type coercion issues when comparing environment constants.
28-28: Consistent use of strict equality operators!The change from
==to===maintains consistency with the strict comparison approach and ensures precise environment matching..vortex/docs/content/getting-started/installation.mdx (3)
7-9: Clear improvement in installation description!Adding "into your project's codebase" makes the installation process more explicit and easier to understand.
13-13: Good addition of documentation reference!The phrase "see relevant sections in the documentation" provides helpful guidance for users to find service-specific setup instructions.
79-79: Static analysis false positive - grammar is correct.The LanguageTool suggestion to change "your" to "you're" is incorrect. "Your hosting" is grammatically correct in this context, referring to the user's hosting service.
🧰 Tools
🪛 LanguageTool
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...(YOUR)
.vortex/tests/bats/_helper.workflow.bash (2)
214-214: Good standardization to American English spelling!The change from "behaviour" to "behavior" improves consistency with American English conventions used throughout the codebase.
Also applies to: 256-256
232-240: Timezone assertions correctly updated to UTC!The changes properly align the test expectations with the global timezone standardization from Australia/Melbourne to UTC. All container assertions now consistently check for "UTC" output.
.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)
50-50: Excellent extension of module prefix renaming!Adding the rename operation for the
sites/default/includesdirectory ensures consistency when module prefixes are changed. This aligns well with the modular settings structure introduced in this PR..ahoy.yml (2)
200-200: Excellent standardization of front-end tooling!The migration from
npm run --prefixtoyarn run --cwdfor bothlint-feandlint-fe-fixcommands creates consistency across the front-end tooling ecosystem. This aligns with the yarn-based build system documented in the theme scaffold.Also applies to: 223-223
286-286: Good spelling correction in comment.Fixed the spelling from "behaviour" to "behavior" for consistency.
.vortex/docs/content/getting-started/features.mdx (1)
38-38: Well-organized documentation improvements!The updates enhance the features documentation by:
- Reordering local development tools for better logical flow
- Adding Gherkin Lint as a completed tooling feature
- Improving wording clarity for database sourcing
- Adding recently implemented workflow features (deployment notifications and Renovate automation)
These changes accurately reflect the current project capabilities and improve documentation completeness.
Also applies to: 47-47, 58-60
web/sites/default/includes/modules/settings.system.php (1)
10-17: Approve the environment-aware system configuration.The implementation correctly:
- Uses environment variables with sensible defaults for cache configuration
- Applies production-specific optimizations (CSS/JS aggregation)
- Follows the modular settings architecture with environment constants
.circleci/config.yml (3)
51-51: Good standardization to UTC timezone.This change aligns with the broader effort to standardize timezone settings across all environments, improving consistency and avoiding timezone-related issues in CI operations.
73-73: Appropriate replacement with explicit path.Using the explicit path
/tmp/workspace/codeinstead of the removedVORTEX_EXPORT_CODE_DIRvariable maintains functionality while simplifying the configuration.
256-258: Useful addition of disk usage monitoring.The
du -shcommand provides valuable insight into the size of the exported code directory, which can help with debugging and monitoring build artifacts..vortex/installer/src/Prompts/Handlers/HostingProvider.php (3)
43-43: Proper cleanup of provider-specific settings tokens.Good addition of
SETTINGS_PROVIDER_ACQUIAtoken removal to ensure complete cleanup when Acquia hosting is deselected, maintaining consistency with the modular provider settings approach.
48-48: Consistent token removal for Lagoon provider.The addition of
SETTINGS_PROVIDER_LAGOONtoken removal maintains consistency with the Acquia provider cleanup and ensures complete removal of provider-specific configuration.
63-63: Complete cleanup in dedicated removal methods.Both
removeAcquia()andremoveLagoon()methods now properly clean up their respective provider settings tokens, ensuring no orphaned configuration remains after provider deselection.Also applies to: 73-73
.vortex/docs/content/drupal/module-scaffold.mdx (4)
10-12: Improved clarity on module purpose.The refined description better explains when and why to use the
ys_basemodule for general-purpose functionality, making the guidance more actionable for developers.
15-16: Better naming convention guidance.The updated recommendation to use the site machine name for theme naming provides clearer, more practical guidance for project setup.
20-21: Explicit file reference with direct link.Adding the specific filename
ys_base.deploy.phpwith a direct GitHub link makes it easier for developers to locate and examine the referenced file.
30-30: Enhanced user guidance with cross-references.The improved phrasing in the tests section and the addition of a reference to the Development workflow documentation provide better navigation and context for users.
Also applies to: 32-35
.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)
61-61: Complete GitHub Actions provider cleanup.Good addition of both the provider settings file removal and the
SETTINGS_PROVIDER_GHAtoken cleanup, ensuring no orphaned configuration remains when GitHub Actions is deselected.Also applies to: 63-63
68-68: Consistent CircleCI provider cleanup.The addition of
settings.circleci.phpfile removal andSETTINGS_PROVIDER_CIRCLECItoken cleanup maintains consistency with the GitHub Actions cleanup and ensures complete provider deselection.Also applies to: 71-71
web/sites/default/includes/providers/settings.container.php (2)
3-11: Docblock Scope Clarification
Docblock clearly states not to place custom settings here and to use per-module settings. This aligns with our modular configuration approach.
13-13: Enable Strict Types
Declaringstrict_types=1is appropriate for safer type handling and consistency across PHP files.tests/phpunit/Drupal/SwitchableSettingsTest.php (2)
185-190: Docblock Correction Verified
Updated the docblock fordataProviderEnvironmentIndicator()to accurately describe its role as a data provider fortestEnvironmentIndicator().
696-701: Default Maintenance Theme Fallback Test Updated
Test now asserts'maintenance_theme' => 'claro'when neither env var is set, matching the updated default in the settings logic.README.md (3)
23-31: Enhance Project Overview
The expanded introduction clearly articulates Vortex’s purpose and benefits, improving clarity and aligning with updated documentation.
37-41: Clarify Maintenance Process
Detailing active maintenance and automated test verification reinforces the project’s reliability and long-term stability.
46-49: Refine Installation Description
Installer instructions are concise, user-friendly, and guide users through the setup process effectively..vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (2)
8-11: Document Dynamic Default for Localdev URL
The added comments explain howCOMPOSE_PROJECT_NAMEdetermines the defaultVORTEX_LOCALDEV_URL, enhancing clarity for users.
13-13: Dynamic URL Fallback Implemented
Using parameter expansion (${COMPOSE_PROJECT_NAME:-example-site}) ensures flexible, project-specific local URLs..vortex/docs/content/README.mdx (2)
17-24: Improve Introduction Clarity
The rewritten introduction succinctly conveys Vortex’s value proposition for onboarding and development.
26-34: Strengthen Developer Experience Messaging
Highlighting standardized tooling and active maintenance enhances consistency across documentation..vortex/docs/content/drupal/README.mdx (2)
22-22: Good grammatical improvement.Changing "You would add" to "You would need to add" better emphasizes the necessity of adding modules and themes.
24-38: Excellent table formatting and description improvements.The table reformatting improves readability, and the refined module descriptions are more precise and consistent. The changes maintain accuracy while improving clarity.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
tests/phpunit/Drupal/SettingsTestCase.php (4)
48-50: Good addition of ENVIRONMENT_PROD constant.Adding the production environment constant maintains consistency with the other environment constants.
52-55: Well-defined PUBLIC_PATH_TESTING constant.The new constant centralizes the public path configuration for testing, improving maintainability.
72-92: Excellent addition of ALLOWED_ENV_VARS filtering.The new constant provides controlled filtering of environment variables with clear documentation. This improves test isolation and prevents conflicts with unrelated environment variables.
163-165: Good use of constants and logical ordering.Using the centralized constants and setting
DRUPAL_PUBLIC_FILESbeforeDRUPAL_TEMPORARY_FILESprovides a logical order for file path configuration..vortex/docs/content/workflows/variables.mdx (4)
187-187: LGTM! Simplified variable description improves readability.The simplified description "Drupal profile name." is more concise and clearer than the previous lengthy explanation.
327-334: LGTM! New Renovate repositories variable is well-documented.The addition of
RENOVATE_REPOSITORIESvariable with clear description and format specification ("organization/repository") is helpful for users managing Renovate configurations.
353-355: LGTM! UTC timezone default is a sensible standardization.Changing the default timezone from
Australia/MelbournetoUTCprovides a neutral, globally consistent default that aligns with best practices for containerized applications.
533-534: LGTM! Database-related variable descriptions are clearer.The updated descriptions for
VORTEX_DB_DIR,VORTEX_DB_DOWNLOAD_URL, andVORTEX_DB_FILEprovide better clarity about their purposes in database dump storage and import processes.Also applies to: 697-698, 757-758
.vortex/docs/content/getting-started/architecture.mdx (3)
12-16: LGTM! Excellent introductory context.The new introductory paragraph effectively sets expectations and explains the purpose of the architecture documentation, providing valuable context for readers.
29-35: LGTM! Visual diagrams enhance understanding.The addition of system component diagrams with dark/light mode support improves the documentation's visual appeal and helps readers understand the architecture at a glance.
238-267: LGTM! Template placeholders section adds valuable transparency.The new section on template placeholders and conditional tokens excellently explains how Vortex maintains transparency while providing customization capabilities. This addresses the "no magic transformations" principle well.
.vortex/docs/content/drupal/theme-scaffold.mdx (2)
7-25: LGTM! Comprehensive introduction with helpful flexibility note.The detailed introduction effectively explains the theme scaffold's purpose and the important note about project-specific preferences shows good awareness of real-world usage patterns.
27-92: LGTM! Comprehensive build system documentation.The detailed build system section with both direct Yarn commands and Ahoy wrapper commands provides excellent guidance for developers working with the theme's build pipeline.
.vortex/docs/content/drupal/provision.mdx (2)
17-38: LGTM! Excellent rationale section clarifies value proposition.The new rationale section effectively explains why
provision.shis needed beyonddrush deploy, addressing bootstrapping, conditional logic, consistency, and extensibility concerns. This helps users understand the architectural decisions.
41-44: LGTM! Visual diagrams improve user experience.Replacing the Mermaid text diagram with embedded images for dark/light modes enhances the documentation's visual appeal and readability.
.vortex/docs/content/drupal/settings.mdx (4)
24-64: LGTM! Excellent approach section explains the problem and solution.The comprehensive approach section effectively explains the challenges of environment-specific Drupal configuration and how Vortex addresses them through environment detection and modular overrides. This provides valuable context for the architectural decisions.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
65-85: LGTM! Clear guidelines promote best practices.The guidelines section provides excellent direction for maintaining clean, modular settings with environment-specific configuration. The emphasis on isolation and default values is particularly valuable.
126-159: LGTM! Comprehensive environment variable tables enhance usability.The detailed tables documenting database and general environment variables with alternatives, defaults, and purposes provide excellent reference material for developers.
160-217: LGTM! Environment type detection section is thorough and clear.The detailed explanation of environment type detection, constants, mechanisms, and override capabilities provides excellent technical documentation that helps users understand and extend the system.
🧰 Tools
🪛 LanguageTool
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
| # Flag to unblock admin. | ||
| DRUPAL_UNBLOCK_ADMIN="${DRUPAL_UNBLOCK_ADMIN:-1}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Accurate comment update
The revised comment now correctly describes that the flag only controls unblocking the admin user.
Consider adding DRUPAL_UNBLOCK_ADMIN and its description to the .env.example or relevant documentation to surface this flag to end users.
🤖 Prompt for AI Agents
In scripts/vortex/login.sh at lines 12 to 13, the comment correctly states that
the flag controls unblocking the admin user. To improve usability, add the
DRUPAL_UNBLOCK_ADMIN environment variable and its description to the
.env.example file or relevant documentation so that end users are aware of this
flag and its purpose.
8781574 to
aeabf94
Compare
aeabf94 to
6c191a4
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
🔭 Outside diff range comments (1)
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)
413-451: 🧹 Nitpick (assertive)Add missing TZ environment variables for consistency.
The valkey and wait_dependencies services lack environment sections with
"TZ": "UTC"entries. For consistency with other services in this fixture, these should be added.Add environment blocks with TZ settings:
"valkey": { "command": null, "entrypoint": null, + "environment": { + "TZ": "UTC" + }, "image": "uselagoon/valkey-8:VERSION","wait_dependencies": { "command": [ "database:3306", "clamav:3310" ], + "environment": { + "TZ": "UTC" + }, "depends_on": {
♻️ Duplicate comments (11)
scripts/vortex/login.sh (1)
12-13: Accurate comment update.The revised comment correctly reflects that this flag only controls unblocking the admin user, not blocking.
The previous suggestion to add
DRUPAL_UNBLOCK_ADMINto.env.exampleor documentation remains valid for better discoverability..vortex/tests/bats/fixtures/docker-compose.noenv.json (1)
413-451: The valkey and wait_dependencies services still lack TZ environment variables.This is the same issue identified in previous reviews - these services need
"TZ": "UTC"entries added to their environment blocks for consistency with other services.web/sites/default/includes/providers/settings.gha.php (1)
15-17: Address the CI environment detection issue.The current logic
!empty(getenv('CI'))has the same issue that was previously flagged - it could incorrectly detect CI environment if theCIvariable is set to string values like "false" or "0".Apply the previously suggested fix:
-if (!empty(getenv('CI'))) { +if (getenv('CI') === 'true' || getenv('CI') === '1') { $settings['environment'] = ENVIRONMENT_CI; }web/sites/default/includes/modules/settings.system.php (1)
19-27: Settings duplication needs architectural review.This file duplicates settings from
settings.automated_cron.php:
skip_permissions_hardening(lines 21 vs automated_cron line 12)system.logging error_level(lines 26 vs automated_cron line 20)This duplication creates maintenance overhead and potential conflicts.
Consider one of these approaches:
- Single responsibility: Move all system-level settings here and remove from automated_cron.php
- Hierarchical loading: Document the intended load order and precedence rules
- Shared settings file: Create a common environment settings file for shared configurations
The current approach violates the DRY principle and could lead to inconsistencies.
web/sites/default/includes/providers/settings.circleci.php (1)
15-17: Consider more robust environment variable checking.Similar to the GitHub Actions provider file, the current logic uses
!empty(getenv('CI'))which could incorrectly detect CI environment if theCIvariable is set to string values like "false" or "0". Consider using a more explicit check:-if (!empty(getenv('CI'))) { +if (getenv('CI') === 'true' || getenv('CI') === '1') { $settings['environment'] = ENVIRONMENT_CI; }This ensures consistent and reliable CI environment detection across all provider files.
web/sites/default/includes/providers/settings.container.php (1)
15-24:⚠️ Potential issueEnsure type safety for getenv() before using in str_replace()
PHPStan correctly warns thatgetenv()may return false. Assign its result to a variable, verify it's a non-empty string, then pass it tostr_replace()to avoid type errors.Apply patch:
- if (!empty(getenv('VORTEX_LOCALDEV_URL'))) { - $patterns = str_replace(['.', 'https://', 'http://', ','], ['\.', '', '', '|'], getenv('VORTEX_LOCALDEV_URL')); + $localdev_url = getenv('VORTEX_LOCALDEV_URL'); + if (!empty($localdev_url) && is_string($localdev_url)) { + $patterns = str_replace(['.', 'https://', 'http://', ','], ['\.', '', '', '|'], $localdev_url);🧰 Tools
🪛 PHPStan (2.1.15)
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
.vortex/docs/content/drupal/provision-example.sh (1)
17-19: 🧹 Nitpick (assertive)Add
pipefailfor robust error handling
Includeset -o pipefailalongsideset -euto ensure failures in piped commands are detected.Apply patch:
set -eu +set -o pipefail [ "${VORTEX_DEBUG-}" = "1" ] && set -xweb/sites/default/settings.php (2)
111-129: 🧹 Nitpick (assertive)Repeat
defined()guards are verbose – consider groupingThe six environment constants are each wrapped in identical
!defined()checks.
Wrapping them in an array loop reduces seven lines to two and keeps the section terse.
72-74:⚠️ Potential issueHash-salt fallback is still predictable – switch to a cryptographically-secure default
Storing
hash_saltas a SHA-256 of the DB host was flagged in an earlier review yet remains unchanged.
Hosts are often identical across environments, resulting in duplicate salts and weakened cookie / session MACs.-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']); +$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));Keeps env-override behaviour while providing a strong, environment-unique fallback.
tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)
342-345: 🧹 Nitpick (assertive)Port 5432 with MySQL driver – clarify or change
Using
5432(PostgreSQL default) while the driver remainsmysqlconfuses
readers. Either add a comment explaining the deliberate mismatch or pick an
obviously custom port like1234.
381-405:⚠️ Potential issueOverride block overwrites the very values the test is meant to assert
Lines 388-399 reset
$settingsback to the default paths after you just set
the custom values (382-387).
As a result, the expectations no longer reflect the environment-variable
overrides and the test will fail (or give a false signal ifsettings.php
returns the customised paths).Remove the duplicate assignment block:
- $settings['config_exclude_modules'] = []; - $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING; - $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml'; - $settings['entity_update_batch_size'] = 50; - $settings['environment'] = static::ENVIRONMENT_SUT; - $settings['file_public_path'] = static::PUBLIC_PATH_TESTING; - $settings['file_private_path'] = static::PRIVATE_PATH_TESTING; - $settings['file_temp_path'] = static::TMP_PATH_TESTING; - $settings['file_scan_ignore_directories'] = [ - 'node_modules', - 'bower_components', - ]; - $settings['hash_salt'] = 'custom_hash_salt'; + // base settings asserted in SettingsTestCase; + // keep only the overrides under test.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (96)
.vortex/docs/static/img/diagram-dark.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-light.pngis excluded by!**/*.png.vortex/docs/static/img/diagram-provision-dark.svgis excluded by!**/*.svg.vortex/docs/static/img/diagram-provision-light.svgis excluded by!**/*.svg.vortex/docs/static/img/installer.pngis excluded by!**/*.png.vortex/installer/tests/Fixtures/install/_baseline/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/renovate.jsonis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_ftp/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_artifact/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_container_image/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/-settings.sw_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.the_force_base.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_minimal/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/profile_the_empire/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.phpis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_clamav/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_no_valkey/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/services_none/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_absent/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/.envis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.jsis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**.vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.ymlis excluded by!.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (58)
.ahoy.yml(3 hunks).circleci/config.yml(3 hunks).env(6 hunks).github/workflows/build-test-deploy.yml(3 hunks).vortex/docs/.utils/variables/extra/.env.local.example.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/.env.variables.sh(1 hunks).vortex/docs/.utils/variables/extra/ci.variables.sh(1 hunks).vortex/docs/content/README.mdx(1 hunks).vortex/docs/content/ci/README.mdx(1 hunks).vortex/docs/content/contributing/maintenance/scripts.mdx(1 hunks).vortex/docs/content/contributing/roadmap.mdx(1 hunks).vortex/docs/content/drupal/README.mdx(2 hunks).vortex/docs/content/drupal/composer.mdx(1 hunks).vortex/docs/content/drupal/module-scaffold.mdx(2 hunks).vortex/docs/content/drupal/provision-example.sh(1 hunks).vortex/docs/content/drupal/provision.mdx(3 hunks).vortex/docs/content/drupal/settings.mdx(3 hunks).vortex/docs/content/drupal/theme-scaffold.mdx(1 hunks).vortex/docs/content/getting-started/architecture.mdx(9 hunks).vortex/docs/content/getting-started/features.mdx(3 hunks).vortex/docs/content/getting-started/installation.mdx(2 hunks).vortex/docs/content/tools/docker.mdx(6 hunks).vortex/docs/content/tools/drush.mdx(1 hunks).vortex/docs/content/tools/rector.mdx(1 hunks).vortex/docs/content/tools/renovate.mdx(1 hunks).vortex/docs/content/workflows/notifications.mdx(1 hunks).vortex/docs/content/workflows/variables.mdx(12 hunks).vortex/docs/cspell.json(1 hunks).vortex/installer/src/Prompts/Handlers/CiProvider.php(1 hunks).vortex/installer/src/Prompts/Handlers/HostingProvider.php(3 hunks).vortex/installer/src/Prompts/Handlers/ModulePrefix.php(1 hunks).vortex/tests/bats/_helper.bash(1 hunks).vortex/tests/bats/_helper.workflow.bash(3 hunks).vortex/tests/bats/fixtures/docker-compose.env.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_local.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.env_mod.json(7 hunks).vortex/tests/bats/fixtures/docker-compose.noenv.json(7 hunks)README.md(1 hunks)docker-compose.yml(1 hunks)renovate.json(1 hunks)scripts/vortex/login.sh(1 hunks)tests/phpunit/Drupal/DatabaseSettingsTest.php(1 hunks)tests/phpunit/Drupal/EnvironmentSettingsTest.php(17 hunks)tests/phpunit/Drupal/SettingsTestCase.php(2 hunks)tests/phpunit/Drupal/SwitchableSettingsTest.php(1 hunks)web/sites/default/includes/modules/settings.automated_cron.php(1 hunks)web/sites/default/includes/modules/settings.seckit.php(1 hunks)web/sites/default/includes/modules/settings.shield.php(1 hunks)web/sites/default/includes/modules/settings.stage_file_proxy.php(1 hunks)web/sites/default/includes/modules/settings.system.php(1 hunks)web/sites/default/includes/modules/settings.ys_base.php(1 hunks)web/sites/default/includes/providers/settings.acquia.php(1 hunks)web/sites/default/includes/providers/settings.circleci.php(1 hunks)web/sites/default/includes/providers/settings.container.php(1 hunks)web/sites/default/includes/providers/settings.gha.php(1 hunks)web/sites/default/includes/providers/settings.lagoon.php(1 hunks)web/sites/default/settings.php(6 hunks)web/themes/custom/your_site_theme/js/your_site_theme.js(1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (4)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
File(10-120)removeTokenAsync(93-100)
.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)
.vortex/installer/src/Utils/File.php (1)
File(10-120)
.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
File(10-120)removeTokenAsync(93-100)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)
tests/phpunit/Drupal/SettingsTestCase.php (4)
assertSettings(290-296)setEnvVars(153-182)requireSettingsFile(221-240)assertConfig(252-258).vortex/docs/docusaurus.config.js (1)
config(10-168)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...
(YOUR)
.vortex/docs/content/drupal/provision.mdx
[uncategorized] ~50-~50: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... The script will exit immediately after start. Useful in emergencies when any kind of...
(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...
(REP_WANT_TO_VB)
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...
(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...
(RECOMMENDED_COMPOUNDS)
.vortex/docs/content/drupal/settings.mdx
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...
(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...
(A_VARIETY_OF)
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...
(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...
(AI_EN_LECTOR_MISSING_DETERMINER_THE)
🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php
19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.
(argument.type)
⏰ Context from checks skipped due to timeout of 90000ms (12)
- GitHub Check: build (0)
- GitHub Check: build (1)
- GitHub Check: vortex-test-installer (8.4)
- GitHub Check: vortex-test-installer (8.3)
- GitHub Check: vortex-test-installer (8.2)
- GitHub Check: vortex-test-workflow (2)
- GitHub Check: vortex-test-workflow (3)
- GitHub Check: vortex-test-workflow (0)
- GitHub Check: vortex-test-workflow (1)
- GitHub Check: vortex-test-common
- GitHub Check: vortex-test-deployment (1)
- GitHub Check: vortex-test-deployment (0)
🔇 Additional comments (65)
.vortex/tests/bats/_helper.bash (1)
1354-1354: LGTM! Spelling standardization to American English.Good consistency improvement aligning with project-wide spelling standardization.
web/themes/custom/your_site_theme/js/your_site_theme.js (1)
3-3: LGTM! Spelling standardization to American English.Good consistency improvement aligning with project-wide spelling standardization effort.
web/sites/default/includes/providers/settings.lagoon.php (1)
8-9: LGTM! Comment clarification improves consistency.Good improvement making the comment more generic and consistent with other provider settings files across the project.
.vortex/docs/content/contributing/maintenance/scripts.mdx (1)
85-85: LGTM! Documentation formatting improvement enhances branding.Good consistency improvement that emphasizes the Vortex project name and aligns with similar formatting updates across the documentation.
.vortex/docs/content/ci/README.mdx (1)
61-61: Typo corrected correctly
The change from "Of default, ..." to "By default, ..." is accurate and improves clarity..vortex/docs/content/tools/rector.mdx (1)
53-53: Branding emphasis is consistent
Bold formatting of Vortex aligns with the rest of the docs and enhances brand consistency..vortex/docs/content/tools/drush.mdx (1)
10-11: Branding emphasis is consistent
Both instances of Vortex are now bolded to match the rest of the documentation.Also applies to: 15-16
.vortex/docs/cspell.json (1)
40-40: Update dictionary entries
Adding "multisite" to the word list and removing the outdated British spelling ensures the spell checker aligns with the project terminology.renovate.json (1)
14-14: Good standardization to UTC timezone.This change aligns with timezone standardization across the project and follows best practices for CI/CD environments by using UTC to avoid timezone-specific issues.
.vortex/docs/.utils/variables/extra/.env.variables.sh (1)
21-21: Spelling standardization to American English.Good change to maintain consistency in documentation by standardizing to American English spelling.
web/sites/default/includes/modules/settings.seckit.php (1)
10-10: Excellent improvement to use strict equality.Changing from loose (
==) to strict (===) equality comparison follows PHP best practices by preventing type coercion issues and improving performance. This is especially important for environment constant comparisons..vortex/docs/content/workflows/notifications.mdx (1)
1-9: LGTM! Documentation structure is well-organized.The frontmatter is properly configured with sidebar label and position. The placeholder content appropriately indicates work in progress status.
.vortex/docs/content/tools/docker.mdx (2)
9-9: LGTM! Improved visual emphasis for product name.The bold formatting for "Vortex" enhances readability and maintains consistent branding throughout the documentation.
169-180: LGTM! Timezone standardization aligns with PR objectives.Changing the default timezone example from
Australia/MelbournetoUTCstandardizes the configuration across all environments and documentation, which aligns with the broader timezone standardization effort in this PR..github/workflows/build-test-deploy.yml (1)
62-62: LGTM! Consistent timezone standardization across CI/CD pipeline.The timezone changes from
Australia/MelbournetoUTCin all job containers (database, build, deploy) ensure consistent time handling across the entire CI/CD pipeline and align with the broader timezone standardization effort in this PR.Also applies to: 171-171, 369-369
web/sites/default/includes/modules/settings.ys_base.php (1)
1-13: LGTM! Well-structured module settings file.The file demonstrates excellent practices:
- Proper strict typing declaration
- Strict comparison operator (===) addresses previous review feedback
- Appropriate CI environment detection and email suspension
- Clean, focused functionality for the YOURSITE Base module
.vortex/docs/content/tools/renovate.mdx (1)
7-7: Documentation consistency improvement looks good.Adding bold formatting to "Vortex" aligns with the broader documentation standardization effort mentioned in the AI summary.
web/sites/default/includes/modules/settings.automated_cron.php (1)
1-13: Clean implementation of environment-specific cron configuration.The file structure follows good practices with strict typing, proper documentation, and focused functionality. The logic to disable automated cron in local and CI environments is appropriate, as external cron management is typically preferred in these environments.
Previous review concerns about settings duplication and logical grouping appear to have been addressed - this file is now focused solely on automated cron configuration.
web/sites/default/includes/providers/settings.acquia.php (1)
8-9: Comment clarification improves documentation accuracy.Updating from "Acquia environments" to "provider environments" makes the documentation more generic and accurate, reflecting that this pattern applies broadly to provider environment handling rather than being Acquia-specific.
web/sites/default/includes/modules/settings.stage_file_proxy.php (1)
11-11: LGTM! Improved type safety with strict comparison.The change from loose (
!=) to strict (!==) comparison for environment checking is a good practice that prevents potential issues from PHP's type coercion. This ensures both value and type must differ fromENVIRONMENT_PROD..vortex/docs/content/drupal/composer.mdx (1)
43-43: LGTM! Improved variable naming for clarity.The renaming from
MyComponentSourcetoComposerJsonSourcemakes the purpose of the variable much clearer and more descriptive.Also applies to: 48-48
.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)
37-37: LGTM! Timezone standardization is consistent.The timezone update from "Australia/Melbourne" to "UTC" across all services is properly applied and aligns with the broader standardization effort mentioned in the summary.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
.vortex/tests/bats/fixtures/docker-compose.env.json (1)
37-37: LGTM! Consistent timezone standardization.The timezone changes are uniformly applied across all services, maintaining consistency with the broader project standardization to UTC.
Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387
tests/phpunit/Drupal/DatabaseSettingsTest.php (1)
43-43: LGTM! Test consistency improvement.Setting the default port to "3306" aligns the test expectations with the actual default port used in the main settings file, ensuring consistency between configuration and tests.
web/sites/default/includes/modules/settings.shield.php (1)
24-24: LGTM! Improved type safety with strict equality operators.Changing from loose (
!=,==) to strict (!==,===) equality operators is a good practice that prevents type coercion issues and ensures precise environment constant comparisons. This is especially important for security-related features like Shield where accurate environment detection is critical.Also applies to: 28-28
.vortex/docs/content/getting-started/installation.mdx (2)
7-13: Excellent documentation improvements for clarity.These changes significantly improve the installation instructions by:
- Clarifying that Vortex is installed "into your project's codebase"
- Fixing the grammatical error ("an interactive installer")
- Providing clearer guidance to "see relevant sections in the documentation"
79-79: Service list update is appropriate.The removal of "Docker Hub" from the manual integration setup list aligns with the streamlined integration approach. Note: The static analysis hint about "your" vs "you're" is a false positive - "your hosting" is correctly possessive here.
🧰 Tools
🪛 LanguageTool
[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...(YOUR)
.ahoy.yml (2)
200-200: Excellent standardization on yarn package manager.The migration from
npm run --prefixtoyarn run --cwdfor bothlint-feandlint-fe-fixcommands addresses the inconsistency that was previously flagged. This aligns with the broader yarn standardization mentioned in the theme scaffold documentation.Also applies to: 223-223
214-214: Good spelling standardization to American English.The correction from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.
Also applies to: 286-286
.vortex/tests/bats/_helper.workflow.bash (2)
232-240: Excellent timezone standardization to UTC.The update from
TZ="Australia/Melbourne"toTZ=UTCwith corresponding assertion updates from "AE" to "UTC" provides a more neutral default timezone for the project template. This addresses the previous review comment about outdated timezone references and aligns with the broader timezone standardization across the project.
214-214: Good spelling standardization to American English.The correction from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.
Also applies to: 256-256
.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)
50-50: Good extension of directory renaming logic.The addition of
File::renameInDir()for thesites/default/includespath logically extends the existing module renaming functionality. This maintains consistency with the existing pattern and supports the new modular settings structure mentioned in the AI summary.web/sites/default/includes/providers/settings.gha.php (1)
1-17: Well-structured provider settings file with clear documentation.The file structure, documentation, and purpose are excellent. The strict typing and clear docblock about file usage restrictions align well with the modular settings approach.
.vortex/docs/content/getting-started/features.mdx (1)
38-38: LGTM! Documentation updates accurately reflect feature enhancements.The reordering of development tools, addition of Gherkin Lint as completed tooling, refined database sourcing description, and addition of deployment notifications and Renovate as completed workflow features are all appropriate documentation updates that align with the actual feature implementations mentioned in the PR summary.
Also applies to: 47-47, 58-60
web/sites/default/includes/modules/settings.system.php (1)
1-11: Well-structured environment-driven configuration.The file properly implements strict typing, clear documentation, and environment variable-driven configuration with sensible fallback values. The cache page max age configuration is particularly well-implemented.
web/sites/default/includes/providers/settings.circleci.php (1)
1-14: Well-documented provider-specific settings file.The file structure, documentation, and separation of concerns are excellent. The clear docblock explaining the file's purpose and advising against custom settings placement is particularly helpful for maintainability.
.vortex/docs/.utils/variables/extra/ci.variables.sh (1)
69-72: LGTM! Well-documented Renovate configuration variable.The addition of
RENOVATE_REPOSITORIESwith clear documentation follows the established pattern and aligns with the Renovate integration features documented elsewhere in the PR..circleci/config.yml (3)
51-51: LGTM: Timezone standardization to UTCGood change to standardize the timezone to UTC across CI environments. This eliminates timezone-related confusion and makes build logs more predictable.
256-258: LGTM: Improved export step with disk usage reportingThe changes properly align with the variable removal and the addition of
du -shprovides helpful debugging information for monitoring build artifact sizes.
73-73:✅ Verification successful
Verify consistency of hardcoded path replacement
The environment variable
VORTEX_EXPORT_CODE_DIRhas been replaced with the hardcoded path/tmp/workspace/code. Ensure this change is consistent with the removal mentioned in the summary and that all references to this variable have been updated.
🏁 Script executed:
#!/bin/bash # Verify that VORTEX_EXPORT_CODE_DIR has been completely removed from the codebase rg "VORTEX_EXPORT_CODE_DIR" --type yaml --type sh --type phpLength of output: 60
Confirm removal of VORTEX_EXPORT_CODE_DIR
A repo-wide search forVORTEX_EXPORT_CODE_DIRreturned no matches, indicating the variable has been fully removed. The hardcoded path in.circleci/config.yml(line 73) is therefore consistent..vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)
43-43: LGTM: Added provider settings token cleanupGood addition to remove the new provider-specific settings tokens (
!SETTINGS_PROVIDER_ACQUIA,!SETTINGS_PROVIDER_LAGOON) alongside the existing hosting tokens. This ensures complete cleanup when providers are selected.Also applies to: 48-48
63-63: LGTM: Consistent token cleanup in removal methodsThe token removal is properly implemented in both
removeAcquia()andremoveLagoon()methods, maintaining consistency with the mainprocess()method changes.Also applies to: 73-73
.vortex/docs/content/drupal/module-scaffold.mdx (4)
10-12: LGTM: Improved module purpose descriptionThe refined description better clarifies the intended use of the
ys_basemodule for general-purpose functionality that doesn't warrant a dedicated feature-specific module.
15-16: LGTM: Clarified theme naming recommendationThe updated guidance to use the site machine name for theme naming is more specific and actionable than the previous wording.
20-21: LGTM: More explicit deploy file referenceMaking the filename explicit (
ys_base.deploy.php) and providing a direct source link improves the documentation's usefulness.
32-35: LGTM: Added helpful cross-referenceThe addition of a reference to the Development workflow documentation provides readers with a clear path to learn more about working with custom modules.
.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)
61-61: LGTM: Added provider settings file cleanupGood addition to remove the provider-specific settings files (
settings.gha.php,settings.circleci.php) when CI providers are deselected. This ensures complete cleanup of provider-related configuration files.Also applies to: 68-68
63-63: LGTM: Consistent token removal for CI providersThe token removal for
SETTINGS_PROVIDER_GHAandSETTINGS_PROVIDER_CIRCLECIis properly implemented alongside the file removal, maintaining consistency with the pattern established in the HostingProvider class.Also applies to: 71-71
README.md (1)
23-31: Documentation updated for clarity
The expanded introduction clearly outlines Vortex’s purpose and features. The tone and structure align well with the rest of the README..vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)
8-13: Use dynamic default for VORTEX_LOCALDEV_URL
The new default value derived fromCOMPOSE_PROJECT_NAMEimproves consistency in local environments. Comments are clear and informative..vortex/docs/content/README.mdx (1)
17-25: Formalize project introduction
The rewritten introduction is concise and mirrors the main README’s improvements. Links and formatting render correctly in MDX.tests/phpunit/Drupal/SwitchableSettingsTest.php (1)
185-185: LGTM: Accurate docblock correction.The docblock now correctly describes the method as a data provider for
testEnvironmentIndicator()..env (2)
35-35: LGTM: Standardized timezone to UTC.Setting the default timezone to UTC is a best practice that avoids timezone-related issues across different deployment environments.
4-10: LGTM: Improved documentation clarity.The comment updates enhance clarity and provide better guidance for developers. The refinements to database section descriptions, notification channel explanations, and general usage instructions make the configuration more maintainable.
Also applies to: 15-16, 86-86, 102-102, 108-108, 134-134, 138-138, 140-154, 161-161, 167-167, 220-220, 223-235
.vortex/docs/content/drupal/README.mdx (3)
22-22: LGTM: Improved language precision.Changing "would add" to "would need to add" better emphasizes the necessity of adding modules and themes for a complete setup.
13-13: LGTM: Simplified module scaffold description.Removing "with tests scaffold" simplifies the description while maintaining accuracy.
24-38: LGTM: Enhanced module table clarity.The table formatting improvements and refined module descriptions provide better clarity. Notable improvements include:
- More precise descriptions (e.g., Shield module: "Restricts access" vs "Protects")
- Better environment examples (adding "Stage")
- Cleaner formatting for readability
tests/phpunit/Drupal/SettingsTestCase.php (3)
52-55: LGTM: Added missing path constants.The new
PUBLIC_PATH_TESTINGandTMP_PATH_TESTINGconstants provide consistency with the existing private and config path constants.Also applies to: 62-66
72-92: LGTM: Centralized environment variable filtering.The
ALLOWED_ENV_VARSconstant provides a clean solution for filtering environment variables during test setup. The comprehensive documentation explains the purpose and extensibility for consumer sites.
163-168: LGTM: Improved environment variable management.The reordering of environment variable assignments and use of the new filtering mechanism enhances test isolation and consistency.
.vortex/docs/content/workflows/variables.mdx (1)
1-1891: Approve documentation updates
The clarifications forDRUPAL_PROFILE, addition ofRENOVATE_REPOSITORIES, timezone default change toUTC, expanded descriptions forVORTEX_DB_DIRandVORTEX_DB_DOWNLOAD_URL, and improved handling ofVORTEX_LOCALDEV_URLall read clearly and align with the corresponding config changes.🧰 Tools
🪛 LanguageTool
[grammar] ~7-~7: Did you mean “configuring”? Or maybe you should add a pronoun? In active voice, ‘allow’ + ‘to’ takes an object, usually a pronoun.
Context: ... Variables Environment variables allow to configure workflows. ## Override order (bottom v...(ALLOW_TO)
[grammar] ~12-~12: This phrase is duplicated. You should probably use “value in” only once.
Context: ...in container taken from image - default value indocker-compose.yml- value in.env(last value wins) - value in `.e...(PHRASE_REPETITION)
[uncategorized] ~51-~51: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...SET` Local database charset. Variable is not used in hosting environment. Defau...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~61-~61: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...N` Local database collation. Variable is not used in hosting environment. Defau...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~79-~79: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...E_HOST` Local database host. Variable is not used in hosting environment. Defau...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~89-~89: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...E_NAME` Local database name. Variable is not used in hosting environment. Defau...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~99-~99: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...RD` Local database password. Variable is not used in hosting environment. Defau...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~109-~109: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...E_PORT` Local database port. Variable is not used in hosting environment. Defau...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~119-~119: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...ERNAME` Local database user. Variable is not used in hosting environment. Defau...(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)
[uncategorized] ~127-~127: You might be missing the article “the” here.
Context: ...al admin email. May need to be reset if database was sanitized. Default value: `webmast...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~277-~277: To form a complete sentence, be sure to include a subject.
Context: ...LAGOON_PROJECTLagoon project name. May be different from [$VORTEX_PROJECT](#...(MISSING_IT_THERE)
[uncategorized] ~285-~285: You might be missing the article “the” here.
Context: ...NEWRELIC_ENABLEDEnable New Relic in Lagoon environment. Set as project-wide varia...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~313-~313: Possible missing preposition found.
Context: ...ether to allow self-hosted Renovate bot make changes to the repository. Default val...(AI_HYDRA_LEO_MISSING_TO)
[grammar] ~337-~337: ‘a’ may be redundant when used with the uncountable noun ‘permission’.
Context: ...t token.
Create a GitHub token with a permission to write to a repository. Default valu...(A_UNCOUNTABLE_NOUN)
[misspelling] ~345-~345: This word is normally spelled as one.
Context: ...ial variable to remap target env to the sub-domain prefix based on UI name. Default value...(EN_COMPOUNDS_SUB_DOMAIN)
[uncategorized] ~441-~441: The official spelling of this programming framework is “Node.js”.
Context: ..._CI_NODEJS_LINT_IGNORE_FAILUREIgnore NodeJS linters failures. Default value:UNDE...(NODE_JS)
[uncategorized] ~507-~507: Possible missing comma found.
Context: ...tainer registry name. Provide port, if required as<server_name>:<port>. Default val...(AI_HYDRA_LEO_MISSING_COMMA)
[misspelling] ~623-~623: Did you mean the phrasal verb “clean up” instead of the noun ‘cleanup’?
Context: ...TE_FILE_CLEANUP` Wildcard file name to cleanup previously created dump files. Cleanup...(CLEAN_UP)
[typographical] ~795-~795: Do not use a colon (:) before a series that is introduced by a preposition (‘of’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ... Deployment action. Values can be one of: deploy, deploy_override_db, destroy. - ...(RP_COLON)
[style] ~814-~814: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ..._DST_BRANCH` Remote repository branch. Can be a specific branch or a token.
@s...(MISSING_IT_THERE)
[uncategorized] ~880-~880: Possible missing comma found.
Context: ...tainer registry name. Provide port, if required as<server_name>:<port>. Default val...(AI_HYDRA_LEO_MISSING_COMMA)
[typographical] ~954-~954: Do not use a colon (:) before a series that is introduced by a preposition (‘of’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...EDeployment mode. Values can be one of: branch, tag. Default value:branch` ...(RP_COLON)
[uncategorized] ~1094-~1094: Possible missing comma found.
Context: ...tainer registry name. Provide port, if required as<server_name>:<port>. Default val...(AI_HYDRA_LEO_MISSING_COMMA)
[style] ~1276-~1276: To form a complete sentence, be sure to include a subject.
Context: ...TIFY_EVENT` The event to notify about. Can be 'pre_deployment' or 'post_deployment...(MISSING_IT_THERE)
[uncategorized] ~1486-~1486: The preposition “in” seems more likely in this position.
Context: ...WEBHOOK_PAYLOADWebhook message body as json format. Default value:${VORTEX...(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)
[uncategorized] ~1494-~1494: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...E_STATUSThe pattern of response code return by curl. Default value:200` Defined...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[uncategorized] ~1520-~1520: You might be missing the article “the” here.
Context: ...SKIPSkip Drupal site provisioning in Acquia environment. Default value:UNDEFINED...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~1582-~1582: You might be missing the article “a” here.
Context: ...ation. Useful when email
is used as username. Default value:UNDEFINEDDefined i...(AI_EN_LECTOR_MISSING_DETERMINER_A)
[uncategorized] ~1664-~1664: A punctuation mark might be missing here.
Context: ...key from prefixes environment variables: - VORTEX_[${VORTEX_SSH_PREFIX}](#vortex_...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~1723-~1723: You might be missing the article “the” here.
Context: ...eval retries. If this limit reached and task has not
yet finished, the task is c...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~1763-~1763: You might be missing the article “the” here.
Context: ...eval retries. If this limit reached and task has not
yet finished, the task is c...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[uncategorized] ~1859-~1859: You might be missing the article “the” here.
Context: ...eval retries. If this limit reached and task has not
yet finished, the task is c...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/getting-started/architecture.mdx (1)
1-181: Approve architecture doc enhancements
The new intro, Zen principles, system‐components diagram, repository structure updates (including renamingstage, addingrecipesand.gitignore.artifact), and the POSIX-compliant formatting fix are coherent and improve clarity.🧰 Tools
🪛 LanguageTool
[uncategorized] ~40-~40: You might be missing the article “the” here.
Context: ...om/drupal-composer/drupal-project) with addition of several configuration files and dire...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~146-~146: Consider replacing this phrase with the adverb “consistently” to avoid wordiness.
Context: ...ipt that is used to provision a website in a consistent way, allowing to alter the flow using [envi...(IN_A_X_MANNER)
[uncategorized] ~150-~150: Do not mix variants of the same word (‘centralize’ and ‘centralise’) within a single text.
Context: ...via custom scripts. The scripts aim to centralize workflows instead of adjusting them for...(EN_WORD_COHERENCY)
[uncategorized] ~153-~153: You might be missing the article “the” here.
Context: ...hat a developer updating a workflow for local environment, for example, will not acci...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
.vortex/docs/content/drupal/theme-scaffold.mdx (1)
1-139: Approve theme scaffold revisions
The expanded introduction, detailed build-system breakdown, note on customization, and container-consistency guidance are well structured and match the tooling changes (npm→yarn)..vortex/docs/content/drupal/provision.mdx (1)
1-157: Approve provisioning doc overhaul
The added rationale section, updated flow diagrams, reworked environment-variable list, clearer sanitization guidance, and examples for custom scripts and conditionals significantly improve usability.🧰 Tools
🪛 LanguageTool
[uncategorized] ~50-~50: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... The script will exit immediately after start. Useful in emergencies when any kind of...(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)
[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...(REP_WANT_TO_VB)
[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4.VORT...(AI_HYDRA_LEO_WORD_ORDER)
[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.
4. `VORTEX_PROVISION_SANITIZ...(RECOMMENDED_COMPOUNDS)
.vortex/docs/content/drupal/settings.mdx (1)
1-292: Approve settings documentation update
The new approach explanation, per-module override guidelines, environment-detection details, and testing instructions comprehensively reflect the corresponding code refactor and test coverage enhancements.🧰 Tools
🪛 LanguageTool
[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...(AI_EN_LECTOR_MISSING_PUNCTUATION)
[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...(A_VARIETY_OF)
[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...(PLURAL_MODIFIER)
[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...(AI_EN_LECTOR_MISSING_DETERMINER_THE)
| 2. Adding support for Cypress and Drupal Test Traits. | ||
| 2. Adding support for Visual Regression and Accessibility tools. | ||
| 3. Introduction of the Vortex Dashboard as a single place for managing projects. | ||
| 3. Introduction of the **Vortex** Dashboard as a single place for managing projects. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Fix list numbering consistency
The Future goals list has two items numbered "2." before your new "3." entry, which can be confusing. Please update the second item to "3." or switch to auto-numbered lists for consistency.
🤖 Prompt for AI Agents
In .vortex/docs/content/contributing/roadmap.mdx at line 28, the numbered list
for Future goals has duplicate "2." entries before the new "3." item, causing
inconsistency. Fix this by renumbering the second "2." item to "3." and updating
subsequent numbers accordingly, or convert the list to use markdown
auto-numbering by using "1." for all items to maintain consistent and correct
numbering.
| #;> HOSTING_LAGOON | ||
| x-environment: &default-environment | ||
| TZ: ${TZ:-Australia/Melbourne} | ||
| TZ: ${TZ:-UTC} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Timezone standardization to UTC is a good practice.
Standardizing to UTC eliminates timezone-related issues across different deployment environments and simplifies debugging. This change aligns with container best practices.
Verify that all timezone configurations across the project have been consistently updated:
🏁 Script executed:
#!/bin/bash
# Description: Check for any remaining hardcoded timezone references
# Expected: Should find minimal or no references to Australia/Melbourne
echo "=== Checking for Australia/Melbourne references ==="
rg "Australia/Melbourne" --type-not=md
echo "=== Checking timezone configurations across key files ==="
rg "TZ.*=" .env docker-compose.yml .circleci/config.yml 2>/dev/null || echo "Some files not found"
echo "=== Checking for other timezone patterns ==="
rg "timezone|TZ" --type yaml --type env -A 2 -B 2Length of output: 624
Fix remaining hardcoded timezone in tests
A search shows one leftover reference to “Australia/Melbourne” in the PHPUnit tests. Please update it to UTC to fully standardize across the project.
• tests/phpunit/Drupal/EnvironmentSettingsTest.php
- 'DRUPAL_TIMEZONE' => 'Australia/Melbourne',
+ 'DRUPAL_TIMEZONE' => 'UTC',📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| TZ: ${TZ:-UTC} | |
| // tests/phpunit/Drupal/EnvironmentSettingsTest.php | |
| return [ | |
| - 'DRUPAL_TIMEZONE' => 'Australia/Melbourne', | |
| + 'DRUPAL_TIMEZONE' => 'UTC', | |
| ]; |
🤖 Prompt for AI Agents
In docker-compose.yml at line 44, the timezone environment variable TZ is set to
UTC, which is good. However, there is a remaining hardcoded timezone reference
to "Australia/Melbourne" in the PHPUnit tests file
tests/phpunit/Drupal/EnvironmentSettingsTest.php. To fully standardize timezone
usage across the project, locate this reference in the test file and update it
to "UTC". This ensures consistent timezone configuration and avoids
environment-specific issues.
| # - provision-20-example.sh | ||
| # - provision-30-example.sh | ||
| # | ||
| # shellcheck disable=SC2086 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Narrow down shellcheck suppression
Instead of disabling SC2086 globally, consider removing the directive or limiting it to specific lines where unquoted expansions are necessary.
🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh at line 15, the shellcheck
directive disables SC2086 globally. To improve code quality, remove this global
suppression and instead apply the shellcheck disable directive only on specific
lines where unquoted expansions are intentionally used and necessary.
| note "Environment: ${environment}" | ||
|
|
||
| # 👇 Perform operations based on the current environment. | ||
| if echo "${environment}" | grep -q -e dev -e stage -e ci -e local; then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Simplify environment matching
Replace echo|grep with a case statement for improved readability and efficiency.
Example:
case "${environment}" in
dev|stage|ci|local)
note "Running example operations in non-production environment."
;;
*)
note "Skipping example operations in production environment."
;;
esac🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh at line 35, replace the
current environment check using echo and grep with a case statement to improve
readability and efficiency. Use a case block to match the environment variable
against dev, stage, ci, and local, and handle the matching and non-matching
cases accordingly, removing the echo and grep usage entirely.
| # 👇 Get the current environment from Drupal settings. | ||
| environment="$(drush php:eval "print \Drupal\core\Site\Settings::get('environment');")" | ||
| note "Environment: ${environment}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Handle failures when retrieving Drupal environment
If drush php:eval fails (e.g., Drupal not bootstrapped), the script will exit due to set -e. Consider capturing the exit code, logging a warning, and providing a default environment.
Example:
if ! environment="$(drush php:eval "...")"; then
note "Warning: Could not detect environment; defaulting to 'local'."
environment="local"
fi
note "Environment: ${environment}"🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh around lines 30 to 32, the
script currently runs `drush php:eval` to get the Drupal environment but does
not handle failures, causing the script to exit if the command fails. Modify the
script to capture the exit status of the `drush php:eval` command using an if
statement; if it fails, log a warning message and set the environment variable
to a default value like "local". Then continue to log the environment as usual.
| // Timezone settings. | ||
| ini_set('date.timezone', getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC'); | ||
| date_default_timezone_set(getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC'); | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Minor: single-source the timezone string to avoid double getenv look-ups
getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC' is evaluated twice.
Assign once, reuse:
-$settings_tz = getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC';
-ini_set('date.timezone', $settings_tz);
-date_default_timezone_set($settings_tz);Purely cosmetic but removes duplication.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In web/sites/default/settings.php around lines 75 to 78, the timezone string is
retrieved twice using getenv calls, causing redundant lookups. Fix this by
assigning the result of getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC' to a
variable once, then use that variable in both ini_set and
date_default_timezone_set calls to avoid duplication.
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Style
Chores