From 3c9cfaf462f07fcd6888b4e32011dca377ca764d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C3=A9na=20Proxima?= <adam@phenaproxima.net> Date: Thu, 9 Jan 2025 19:55:19 -0500 Subject: [PATCH] Issue #3493335 by phenaproxima, catch, poker10, tim.plunkett, pameeela, yesct, damienmckenna, greggles: Change minimum-stability to stable for 1.0 release --- .ddev/commands/web/tag | 31 ++++++++---------- .ddev/homeadditions/bin/adjust-constraints | 16 ++++++++++ .gitlab-ci.yml | 4 +++ project_template/composer.json | 32 +++++++++++-------- .../composer.json | 2 +- recipes/drupal_cms_ai/composer.json | 2 +- recipes/drupal_cms_analytics/composer.json | 2 +- .../drupal_cms_authentication/composer.json | 2 +- recipes/drupal_cms_blog/composer.json | 2 +- recipes/drupal_cms_case_study/composer.json | 2 +- .../composer.json | 4 +-- recipes/drupal_cms_events/composer.json | 6 ++-- recipes/drupal_cms_forms/composer.json | 4 +-- .../drupal_cms_google_analytics/composer.json | 2 +- recipes/drupal_cms_news/composer.json | 2 +- recipes/drupal_cms_page/composer.json | 2 +- recipes/drupal_cms_person/composer.json | 2 +- .../drupal_cms_privacy_basic/composer.json | 2 +- recipes/drupal_cms_project/composer.json | 2 +- recipes/drupal_cms_remote_video/composer.json | 2 +- recipes/drupal_cms_starter/composer.json | 18 +++++------ 21 files changed, 80 insertions(+), 61 deletions(-) create mode 100755 .ddev/homeadditions/bin/adjust-constraints diff --git a/.ddev/commands/web/tag b/.ddev/commands/web/tag index dfc8c2cb3..391653d0d 100755 --- a/.ddev/commands/web/tag +++ b/.ddev/commands/web/tag @@ -13,8 +13,12 @@ if [ -z "$VERSION" ]; then exit 1 fi -# Find all `composer.json` files and change their `*` version constraints. -find . -maxdepth 3 -type f -name composer.json -exec sed --in-place "s/\"\*\"/\"~$VERSION\"/g" {} ';' +COMPONENTS=$(find $PWD -maxdepth 2 -type d -name 'drupal_cms_*' -or -name project_template) + +# Change all components' version constraints. +for dir in $COMPONENTS; do + adjust-constraints $dir "~$VERSION" +done # Generate pre-parsed versions of the recipes available to the installer, # and store them in a serialized file format for one-time use. This greatly @@ -23,24 +27,13 @@ cd $DDEV_DOCROOT ./profiles/drupal_cms_installer/build-cache.sh cd - -# Bump the minimum stability of the project template and ensure it correctly -# conflicts with `drupal/drupal`. -cd project_template -composer config minimum-stability beta -jq --indent 4 '.conflict."drupal/drupal" = "*"' composer.json > tag.json -mv -f tag.json composer.json -cd - - -# For visbility, output every line we're executing, as interpreted by the shell. -set -x - -# Remove any untracked files. -git clean -d --force +# Bump the minimum stability of the project template. +composer config minimum-stability stable --working-dir=project_template # Stage all changes, but if we're just testing this script, don't actually commit # or tag anything. -git add . -if [[ "$VERSION" == "test" ]]; then +git add $COMPONENTS +if [[ $2 == "test" ]]; then exit 0 fi @@ -49,5 +42,7 @@ git commit --message=$VERSION git tag $VERSION # Make another commit that puts this branch back into its pre-tagged state. -find . -maxdepth 2 -type d -name 'drupal_cms_*' -or -name project_template -exec git checkout HEAD^1 {} ';' +for dir in $COMPONENTS; do + git checkout HEAD^1 $dir +done git commit --all --message="Back to dev." diff --git a/.ddev/homeadditions/bin/adjust-constraints b/.ddev/homeadditions/bin/adjust-constraints new file mode 100755 index 000000000..a195e7e7c --- /dev/null +++ b/.ddev/homeadditions/bin/adjust-constraints @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# Alters dependency constraints for Drupal CMS components required by a +# given `composer.json` file. +# Usage: adjust-constraints path/to/component <constraint> +# Example: adjust-constraints project_template "~1.2.3" + +DIR=$1 + +DEPENDENCIES=$(jq -r '.require | keys | .[] | select(startswith("drupal/drupal_cms_"))' $DIR/composer.json) + +echo "Adjusting constraints in $DIR." + +for package in $DEPENDENCIES; do + composer require --quiet --no-update --working-dir=$DIR "$package:$2" +done diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0f8d1418e..f3de319b1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -108,6 +108,10 @@ default: build test project: stage: test script: + # If this is a merge request branch, ensure that any recipe which requires the + # target branch (e.g., `"drupal/drupal_cms_ai": "1.x-dev"`) will know to refer + # to the detached HEAD we're operating from. + - if [ $CI_PIPELINE_SOURCE == "merge_request_event" ]; then find . -maxdepth 2 -type d -name 'drupal_cms_*' -exec composer config extra.branch-alias.dev-$CI_COMMIT_SHA $CI_MERGE_REQUEST_TARGET_BRANCH_NAME-dev --working-dir={} ';' ; fi - *create-project # Generate `composer.json` by merging our dev requirements into the project template. - .ddev/homeadditions/bin/generate-composer-json > $BUILD_DIR/composer.json diff --git a/project_template/composer.json b/project_template/composer.json index 00f609085..f779170f1 100644 --- a/project_template/composer.json +++ b/project_template/composer.json @@ -19,20 +19,24 @@ "drupal/core-composer-scaffold": "^11.1.1", "drupal/core-project-message": "^11.1.1", "drupal/core-recommended": "^11.1.1", - "drupal/drupal_cms_starter": "*", - "drupal/drupal_cms_analytics": "*", - "drupal/drupal_cms_accessibility_tools": "*", - "drupal/drupal_cms_ai": "*", - "drupal/drupal_cms_blog": "*", - "drupal/drupal_cms_case_study": "*", - "drupal/drupal_cms_events": "*", - "drupal/drupal_cms_forms": "*", - "drupal/drupal_cms_news": "*", - "drupal/drupal_cms_person": "*", - "drupal/drupal_cms_project": "*", - "drupal/drupal_cms_seo_tools": "*", - "drush/drush": "^13", - "drupal/project_browser": "@alpha" + "drupal/dashboard": "@beta", + "drupal/drupal_cms_accessibility_tools": "1.0.x-dev", + "drupal/drupal_cms_ai": "1.0.x-dev", + "drupal/drupal_cms_analytics": "1.0.x-dev", + "drupal/drupal_cms_blog": "1.0.x-dev", + "drupal/drupal_cms_case_study": "1.0.x-dev", + "drupal/drupal_cms_events": "1.0.x-dev", + "drupal/drupal_cms_forms": "1.0.x-dev", + "drupal/drupal_cms_news": "1.0.x-dev", + "drupal/drupal_cms_page": "1.0.x-dev", + "drupal/drupal_cms_person": "1.0.x-dev", + "drupal/drupal_cms_project": "1.0.x-dev", + "drupal/drupal_cms_seo_tools": "1.0.x-dev", + "drupal/drupal_cms_starter": "1.0.x-dev", + "drupal/klaro": "@rc", + "drupal/project_browser": "@alpha", + "drupal/webform": "@beta", + "drush/drush": "^13" }, "conflict": { "drupal/drupal": "*" diff --git a/recipes/drupal_cms_accessibility_tools/composer.json b/recipes/drupal_cms_accessibility_tools/composer.json index 083c7db68..71dd69725 100644 --- a/recipes/drupal_cms_accessibility_tools/composer.json +++ b/recipes/drupal_cms_accessibility_tools/composer.json @@ -5,7 +5,7 @@ "license": ["GPL-2.0-or-later"], "require": { "drupal/core": ">=10.3", - "drupal/drupal_cms_page": "*", + "drupal/drupal_cms_page": "1.0.x-dev", "drupal/editoria11y": "^2.2" } } diff --git a/recipes/drupal_cms_ai/composer.json b/recipes/drupal_cms_ai/composer.json index 18361abf3..75d4e22b0 100644 --- a/recipes/drupal_cms_ai/composer.json +++ b/recipes/drupal_cms_ai/composer.json @@ -10,7 +10,7 @@ "drupal/ai_image_alt_text": "^1", "drupal/ai_provider_anthropic": "^1", "drupal/ai_provider_openai": "^1", - "drupal/drupal_cms_privacy_basic": "*", + "drupal/drupal_cms_privacy_basic": "1.0.x-dev", "league/commonmark": "^2.4" } } diff --git a/recipes/drupal_cms_analytics/composer.json b/recipes/drupal_cms_analytics/composer.json index c3efee2a6..b2da6f3b8 100644 --- a/recipes/drupal_cms_analytics/composer.json +++ b/recipes/drupal_cms_analytics/composer.json @@ -3,6 +3,6 @@ "type": "metapackage", "description": "Adds recipes for tracking website traffic.", "require": { - "drupal/drupal_cms_google_analytics": "*" + "drupal/drupal_cms_google_analytics": "1.0.x-dev" } } diff --git a/recipes/drupal_cms_authentication/composer.json b/recipes/drupal_cms_authentication/composer.json index ef7bdc1ad..61a8fcb20 100644 --- a/recipes/drupal_cms_authentication/composer.json +++ b/recipes/drupal_cms_authentication/composer.json @@ -6,7 +6,7 @@ "require": { "drupal/bpmn_io": "^2.0.3", "drupal/core": ">=10.3", - "drupal/eca": "^2.1.0", + "drupal/eca": "^2.1", "drupal/login_emailusername": "^3", "drupal/token": "^1" } diff --git a/recipes/drupal_cms_blog/composer.json b/recipes/drupal_cms_blog/composer.json index c1030e403..4d9aa147e 100644 --- a/recipes/drupal_cms_blog/composer.json +++ b/recipes/drupal_cms_blog/composer.json @@ -6,7 +6,7 @@ "require": { "drupal/core": ">=10.4", "drupal/add_content_by_bundle": "^1.2.2", - "drupal/drupal_cms_page": "*", + "drupal/drupal_cms_page": "1.0.x-dev", "drupal/better_exposed_filters": "^7", "drupal/selective_better_exposed_filters": "^3" } diff --git a/recipes/drupal_cms_case_study/composer.json b/recipes/drupal_cms_case_study/composer.json index 8226f3760..48c7939df 100644 --- a/recipes/drupal_cms_case_study/composer.json +++ b/recipes/drupal_cms_case_study/composer.json @@ -6,6 +6,6 @@ "require": { "drupal/core": ">=10.4", "drupal/add_content_by_bundle": "^1.2.2", - "drupal/drupal_cms_page": "*" + "drupal/drupal_cms_page": "1.0.x-dev" } } diff --git a/recipes/drupal_cms_content_type_base/composer.json b/recipes/drupal_cms_content_type_base/composer.json index 7a35b782d..5df238a1a 100644 --- a/recipes/drupal_cms_content_type_base/composer.json +++ b/recipes/drupal_cms_content_type_base/composer.json @@ -7,8 +7,8 @@ "drupal/autosave_form": "^1.7", "drupal/bpmn_io": "^2.0.3", "drupal/core": ">=10.4", - "drupal/drupal_cms_image": "*", - "drupal/eca": "^2.1.0", + "drupal/drupal_cms_image": "1.0.x-dev", + "drupal/eca": "^2.1", "drupal/linkit": "^7", "drupal/pathauto": "^1.13", "drupal/token": "^1", diff --git a/recipes/drupal_cms_events/composer.json b/recipes/drupal_cms_events/composer.json index 3e58bb6c5..aa2198f9a 100644 --- a/recipes/drupal_cms_events/composer.json +++ b/recipes/drupal_cms_events/composer.json @@ -7,9 +7,9 @@ "drupal/core": ">=10.4", "drupal/add_content_by_bundle": "^1.2.2", "drupal/address": "^2", - "drupal/addtocal_augment": "^1.2@rc", - "drupal/drupal_cms_page": "*", - "drupal/drupal_cms_privacy_basic": "*", + "drupal/addtocal_augment": "^1.2.3", + "drupal/drupal_cms_page": "1.0.x-dev", + "drupal/drupal_cms_privacy_basic": "1.0.x-dev", "drupal/geocoder": "^4.10", "drupal/geofield": "^1.47", "drupal/leaflet": "^10.2.33", diff --git a/recipes/drupal_cms_forms/composer.json b/recipes/drupal_cms_forms/composer.json index de1f28288..95c112932 100644 --- a/recipes/drupal_cms_forms/composer.json +++ b/recipes/drupal_cms_forms/composer.json @@ -4,8 +4,8 @@ "type": "drupal-recipe", "license": ["GPL-2.0-or-later"], "require": { - "drupal/drupal_cms_anti_spam": "*", - "drupal/drupal_cms_page": "*", + "drupal/drupal_cms_anti_spam": "1.0.x-dev", + "drupal/drupal_cms_page": "1.0.x-dev", "drupal/core": ">=10.4", "drupal/webform": "^6.3-beta1" } diff --git a/recipes/drupal_cms_google_analytics/composer.json b/recipes/drupal_cms_google_analytics/composer.json index c242c2ddb..ad4de9bc8 100644 --- a/recipes/drupal_cms_google_analytics/composer.json +++ b/recipes/drupal_cms_google_analytics/composer.json @@ -5,6 +5,6 @@ "require": { "drupal/core": ">=10.4", "drupal/google_tag": "^2.0.7", - "drupal/drupal_cms_privacy_basic": "*" + "drupal/drupal_cms_privacy_basic": "1.0.x-dev" } } diff --git a/recipes/drupal_cms_news/composer.json b/recipes/drupal_cms_news/composer.json index a38f4e2fe..486f63cd6 100644 --- a/recipes/drupal_cms_news/composer.json +++ b/recipes/drupal_cms_news/composer.json @@ -6,7 +6,7 @@ "require": { "drupal/core": ">=10.4", "drupal/add_content_by_bundle": "^1.2.2", - "drupal/drupal_cms_page": "*", + "drupal/drupal_cms_page": "1.0.x-dev", "drupal/better_exposed_filters": "^7", "drupal/selective_better_exposed_filters": "^3" } diff --git a/recipes/drupal_cms_page/composer.json b/recipes/drupal_cms_page/composer.json index 6232b87db..9f4d88f22 100644 --- a/recipes/drupal_cms_page/composer.json +++ b/recipes/drupal_cms_page/composer.json @@ -5,6 +5,6 @@ "license": ["GPL-2.0-or-later"], "require": { "drupal/core": ">=10.4", - "drupal/drupal_cms_content_type_base": "*" + "drupal/drupal_cms_content_type_base": "1.0.x-dev" } } diff --git a/recipes/drupal_cms_person/composer.json b/recipes/drupal_cms_person/composer.json index 1c6e1ea24..5ba5790a3 100644 --- a/recipes/drupal_cms_person/composer.json +++ b/recipes/drupal_cms_person/composer.json @@ -5,6 +5,6 @@ "license": ["GPL-2.0-or-later"], "require": { "drupal/core": ">=10.4", - "drupal/drupal_cms_content_type_base": "*" + "drupal/drupal_cms_content_type_base": "1.0.x-dev" } } diff --git a/recipes/drupal_cms_privacy_basic/composer.json b/recipes/drupal_cms_privacy_basic/composer.json index 705fbda80..329283e26 100644 --- a/recipes/drupal_cms_privacy_basic/composer.json +++ b/recipes/drupal_cms_privacy_basic/composer.json @@ -7,7 +7,7 @@ "drupal/bpmn_io": "^2.0.3", "drupal/core": ">=10.4", "drupal/eca": "^2.1", - "drupal/drupal_cms_page": "*", + "drupal/drupal_cms_page": "1.0.x-dev", "drupal/klaro": "^3-rc16", "drupal/menu_link_attributes": "^1.5" } diff --git a/recipes/drupal_cms_project/composer.json b/recipes/drupal_cms_project/composer.json index 2debc5605..e2cabb54f 100644 --- a/recipes/drupal_cms_project/composer.json +++ b/recipes/drupal_cms_project/composer.json @@ -6,6 +6,6 @@ "require": { "drupal/core": ">=10.4", "drupal/add_content_by_bundle": "^1.2.2", - "drupal/drupal_cms_page": "*" + "drupal/drupal_cms_page": "1.0.x-dev" } } diff --git a/recipes/drupal_cms_remote_video/composer.json b/recipes/drupal_cms_remote_video/composer.json index 312e265b3..04a7e73ed 100644 --- a/recipes/drupal_cms_remote_video/composer.json +++ b/recipes/drupal_cms_remote_video/composer.json @@ -5,6 +5,6 @@ "license": ["GPL-2.0-or-later"], "require": { "drupal/core": ">=10.4", - "drupal/drupal_cms_privacy_basic": "*" + "drupal/drupal_cms_privacy_basic": "1.0.x-dev" } } diff --git a/recipes/drupal_cms_starter/composer.json b/recipes/drupal_cms_starter/composer.json index 53372dd03..37ac0d85c 100644 --- a/recipes/drupal_cms_starter/composer.json +++ b/recipes/drupal_cms_starter/composer.json @@ -9,15 +9,15 @@ "drupal/core": ">=10.4", "drupal/eca": "^2.1", "drupal/dashboard": "^2-beta1", - "drupal/drupal_cms_admin_ui": "*", - "drupal/drupal_cms_anti_spam": "*", - "drupal/drupal_cms_authentication": "*", - "drupal/drupal_cms_olivero": "*", - "drupal/drupal_cms_page": "*", - "drupal/drupal_cms_privacy_basic": "*", - "drupal/drupal_cms_remote_video": "*", - "drupal/drupal_cms_search": "*", - "drupal/drupal_cms_seo_basic": "*", + "drupal/drupal_cms_admin_ui": "1.0.x-dev", + "drupal/drupal_cms_anti_spam": "1.0.x-dev", + "drupal/drupal_cms_authentication": "1.0.x-dev", + "drupal/drupal_cms_olivero": "1.0.x-dev", + "drupal/drupal_cms_page": "1.0.x-dev", + "drupal/drupal_cms_privacy_basic": "1.0.x-dev", + "drupal/drupal_cms_remote_video": "1.0.x-dev", + "drupal/drupal_cms_search": "1.0.x-dev", + "drupal/drupal_cms_seo_basic": "1.0.x-dev", "drupal/easy_email_express": "^1.0.2", "drupal/project_browser": "^2-alpha7", "drupal/token": "^1" -- GitLab