X-Git-Url: https://git.ao2.it/drupal-init-tools.git/blobdiff_plain/bb5a254163ca86ab66bb864b82e5298da6a11285..HEAD:/libexec/create-profile.sh diff --git a/libexec/create-profile.sh b/libexec/create-profile.sh index 84ab022..a8ce396 100755 --- a/libexec/create-profile.sh +++ b/libexec/create-profile.sh @@ -68,7 +68,12 @@ PROFILE_DEST_DIR="${PROJECT_ROOT}/${PROFILE_MACHINE_NAME}" [ -d "${PROFILE_DEST_DIR}" ] && { echo "Aborting, '${PROFILE_DEST_DIR}' already exists." 1>&2; exit 1; } -pushd "$WEB_ROOT" +pushd "$WEB_ROOT" > /dev/null + +CURRENT_PROFILE="$($DRUSH php-eval "echo drupal_get_profile();")" +CURRENT_PROFILE_PATH="$($DRUSH php-eval "echo drupal_get_path('profile', '${CURRENT_PROFILE}');")" + +[ -d "$CURRENT_PROFILE_PATH" ] || { echo "Aborting, the current profile path is not valid." 1>&2; exit 1; } # The list of modules and themes could also be obtained by exporting the # configuration first and then looking at: config/install/core.extension.yml @@ -95,6 +100,31 @@ $DRUPAL_CONSOLE generate:profile \ --profile-path="$PROJECT_ROOT" \ --no-interaction +# Copy private code and data from the currently installed profile +pushd "$CURRENT_PROFILE_PATH" > /dev/null + +find . -maxdepth 1 -type d ! -name "tests" -printf "%P\n" | + while read -r dir; + do + [ -d "$dir" ] && cp -r "$dir" "${PROFILE_DEST_DIR}/" + done + +find . -maxdepth 1 -type f ! -name "*.info.yml" -printf "%P\n" | + while read -r original_file; + do + DESTINATION_FILE="${PROFILE_DEST_DIR}/${original_file/#${CURRENT_PROFILE}/${PROFILE_MACHINE_NAME}}" + cp "${original_file}" "$DESTINATION_FILE" + if file "$original_file" | grep -q PHP; + then + sed -i \ + -e "s/^function ${CURRENT_PROFILE}_/function ${PROFILE_MACHINE_NAME}_/g" \ + -e "s/\$form\['#submit'\]\[\] = '${CURRENT_PROFILE}_/\$form\['#submit'\]\[\] = '${PROFILE_MACHINE_NAME}_/g" \ + "$DESTINATION_FILE" + fi + done + +popd > /dev/null + # Basically do what's suggested in the "Configuration" section here: # https://www.drupal.org/docs/8/creating-distributions/how-to-write-a-drupal-8-installation-profile $DRUPAL_CONSOLE config:export --directory="${PROFILE_DEST_DIR}/config/install" --remove-uuid --remove-config-hash @@ -109,9 +139,17 @@ find "${PROFILE_DEST_DIR}/config/install" -type f -exec sed -i -e '/^_core: { } #fdupes -f -1 "${WEB_ROOT}/core/profiles/standard/config/install/" "${PROFILE_DEST_DIR}/config/install/" | xargs rm # Export the default content if the default_content module is there -if echo "$ENABLED_MODULES" | grep -q default_content; +if $DRUSH pm-list --type=module --field=name --status=enabled --pipe | grep -q "^default_content$"; then $DRUSH default-content-export-references --folder="${PROFILE_DEST_DIR}/content" node fi -popd +# The code copied over from the current profile may refer to the old name. +# Warn the user about that. +if [ "$PROFILE_MACHINE_NAME" != "$CURRENT_PROFILE" ]; +then + echo "The newly created profile has a name different from the current profile." + echo "Check that the code of the created profile refers to the new profile name." +fi + +popd > /dev/null