X-Git-Url: https://git.ao2.it/drupal-init-tools.git/blobdiff_plain/bb5a254163ca86ab66bb864b82e5298da6a11285..f4f92c2b7ddb36cda3da9a529a3118ee06455be4:/libexec/create-profile.sh diff --git a/libexec/create-profile.sh b/libexec/create-profile.sh index 84ab022..62a5b01 100755 --- a/libexec/create-profile.sh +++ b/libexec/create-profile.sh @@ -70,6 +70,11 @@ PROFILE_DEST_DIR="${PROJECT_ROOT}/${PROFILE_MACHINE_NAME}" pushd "$WEB_ROOT" +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 # like this: @@ -95,6 +100,28 @@ $DRUPAL_CONSOLE generate:profile \ --profile-path="$PROJECT_ROOT" \ --no-interaction +# Copy private code and data from the currently installed profile +pushd "$CURRENT_PROFILE_PATH" + +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 "s/^function ${CURRENT_PROFILE}_/function ${PROFILE_MACHINE_NAME}_/g" "$DESTINATION_FILE" + fi + done + +popd + # 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 @@ -114,4 +141,12 @@ then $DRUSH default-content-export-references --folder="${PROFILE_DEST_DIR}/content" node fi +# 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