-
Notifications
You must be signed in to change notification settings - Fork 800
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Synced Newspack Blocks: Update to 4.5.2 (#40636)
* Sync newspack-blocks to 4.5.2 * Update script to auto-add textdomain to block.json * Update script to detect potential ENT_COMPAT needs * Script tweaks * More script tweaks * Add .phpcs.dir.xml via script * Finish up 4.5.2 block sync * Update baseline * Update Phan baseline in script * Commit changes from script * Add ENT_COMPAT again * Add changelog * Add .phpcsignore * Commit synced blocks with PHPCS lint disabled * Allow one to resync current version * Update eslint and phpcbf calls * Commit less-linted JS/TS files * Clean up paths * Once again apply ENT_COMPAT changes * Update README * Update index.php version number via script * Don't run Phan on synced files * Remove Phan from README * Simplify PHP textdomain fix * Catch additional textdomain cases * Adjust docs wording Co-authored-by: Brad Jorsch <[email protected]> * Remove `ENT_COMPAT` step --------- Co-authored-by: Brad Jorsch <[email protected]>
- Loading branch information
Showing
34 changed files
with
729 additions
and
738 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
src/features/newspack-blocks/synced-newspack-blocks |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -14,7 +14,7 @@ fi | |
|
||
# pick up value considering that the argument | ||
# has the --key=value shape. | ||
key_value=$(echo ${1} | cut -d'=' -f 2) | ||
key_value=$(echo "${1}" | cut -d'=' -f 2) | ||
# Set mode depending on first argument | ||
if [[ $1 =~ ^--release= ]] | ||
then | ||
|
@@ -44,15 +44,14 @@ then | |
echo --branch=master | ||
echo "--nodemodules (to use defined in package.json)" | ||
echo "--path=/path/to/newspack-blocks" | ||
echo --release=v2.0.0 | ||
echo --release=v4.0.0 | ||
echo | ||
echo You can find the latest release ID on https://github.com/Automattic/newspack-blocks/releases/latest | ||
echo | ||
exit 1 | ||
fi | ||
|
||
TARGET=./src/features/newspack-blocks/synced-newspack-blocks | ||
ENTRY=./src/features/newspack-blocks/index.php | ||
|
||
if [[ ( "$MODE" != "path" ) && ( "$MODE" != "npm" ) ]]; | ||
then | ||
|
@@ -62,20 +61,23 @@ then | |
|
||
if [[ "$CURRENT_VERSION" == "$NAME" ]]; then | ||
echo "The current version $CURRENT_VERSION of the newspack-blocks is synced." | ||
exit 0 | ||
read -rp "Do you want to proceed anyway? (y/N): " proceed | ||
if [[ ! "$proceed" =~ ^[Yy]$ ]]; then | ||
exit 0 | ||
fi | ||
fi | ||
fi | ||
|
||
# make a temp directory | ||
TEMP_DIR=`mktemp -d` | ||
TEMP_DIR=$(mktemp -d) | ||
CODE=$TEMP_DIR/code | ||
|
||
# download zip file | ||
echo Downloading $MODE $NAME into $TEMP_DIR | ||
(cd $TEMP_DIR && curl -L --fail -s -O $URL) | ||
echo "Downloading $MODE $NAME into $TEMP_DIR" | ||
(cd "$TEMP_DIR" && curl -L --fail -s -O "$URL") | ||
|
||
# handle download error | ||
ZIPS=( $TEMP_DIR/*.zip ) | ||
ZIPS=( "$TEMP_DIR"/*.zip ) | ||
ZIP=${ZIPS[0]} | ||
if [ ! -f "$ZIP" ]; then | ||
echo "Tried to download $URL" | ||
|
@@ -90,13 +92,13 @@ then | |
fi | ||
|
||
# extract zip | ||
echo Extracting into $CODE | ||
mkdir -p $CODE | ||
unzip -q $ZIP -d $CODE | ||
echo "Extracting into $CODE" | ||
mkdir -p "$CODE" | ||
unzip -q "$ZIP" -d "$CODE" | ||
|
||
# find the main file and use its directory as the root of our source dir | ||
MAIN_FILE=`find $CODE -name "newspack-blocks.php"` | ||
CODE=`dirname $MAIN_FILE` | ||
MAIN_FILE=$(find "$CODE" -name "newspack-blocks.php") | ||
CODE=$(dirname "$MAIN_FILE") | ||
|
||
# handle unzip error | ||
if [ ! -f "$CODE/newspack-blocks.php" ]; then | ||
|
@@ -127,31 +129,84 @@ mkdir -p $TARGET/components | |
mkdir -p $TARGET/shared | ||
mkdir -p $TARGET/types | ||
|
||
# copy files and directories | ||
NEW_VERSION=v`jq -r .version $CODE/package.json` | ||
# Update Newspack Blocks version number in the package. | ||
NEW_VERSION=v$(jq -r .version "$CODE"/package.json) | ||
echo "$NEW_VERSION" > $TARGET/version.txt | ||
cp $CODE/includes/class-newspack-blocks-api.php $TARGET/ | ||
cp $CODE/includes/class-newspack-blocks.php $TARGET/ | ||
cp -R $CODE/src/blocks/homepage-articles $TARGET/blocks/ | ||
cp -R $CODE/src/blocks/carousel $TARGET/blocks/ | ||
cp -R $CODE/src/shared $TARGET/ | ||
cp -R $CODE/src/components $TARGET/ | ||
sed -E -i.bak "s|^define\( 'NEWSPACK_BLOCKS__VERSION', '.*' \);$|define( 'NEWSPACK_BLOCKS__VERSION', '$NEW_VERSION' );|" "$TARGET"/../index.php | ||
rm "$TARGET"/../index.php.bak | ||
|
||
# copy files and directories | ||
cp "$CODE"/includes/class-newspack-blocks-api.php $TARGET/ | ||
cp "$CODE"/includes/class-newspack-blocks.php $TARGET/ | ||
cp -R "$CODE"/src/blocks/homepage-articles $TARGET/blocks/ | ||
cp -R "$CODE"/src/blocks/carousel $TARGET/blocks/ | ||
cp -R "$CODE"/src/shared $TARGET/ | ||
cp -R "$CODE"/src/components $TARGET/ | ||
|
||
# Get Typescript working by copying the main type defs over. | ||
cp $CODE/src/types/index.d.ts $TARGET/types/ | ||
cp "$CODE"/src/types/index.d.ts $TARGET/types/ | ||
# Function types need to be capitalized in our system. We only match " function" | ||
# beginning with a space to avoid matching it as a substring. (Not perfect, but | ||
# imperfections will be caught by CI with failing tsc, etc.) | ||
sed "${sedi[@]}" -e "s| function| Function|g" "$TARGET/types/index.d.ts" | ||
|
||
# Note: I would have used eslint-nibble, but it doesn't support autofixing via the CLI. | ||
echo "Changing JS textdomain to match jetpack-mu-wpcom..." | ||
pnpm [email protected] dlx eslint --no-ignore --rule '"@wordpress/i18n-text-domain":["error",{"allowedTextDomain":"jetpack-mu-wpcom"}]' --fix $TARGET > /dev/null | ||
BASE=$(cd "$(dirname "${BASH_SOURCE[0]}")"/../../../.. && pwd) | ||
FULLTARGET="$PWD/$TARGET" | ||
|
||
# Add a temporary single-rule eslint.config.mjs file. | ||
cat > "$TARGET/eslint.config.mjs" <<EOF | ||
import makeBaseConfig from 'jetpack-js-tools/eslintrc/base.mjs'; | ||
// This directory is copy-pasted from elsewhere, but we still need to run this one rule over it. | ||
export default [ | ||
// Import base config, but no rules. | ||
...makeBaseConfig( import.meta.url ).map( block => ( { ...block, rules: {} } ) ), | ||
// Enable just this one rule. | ||
{ | ||
rules: { | ||
"@wordpress/i18n-text-domain": [ "error", { allowedTextDomain: "jetpack-mu-wpcom" } ], | ||
} | ||
}, | ||
]; | ||
EOF | ||
( cd "$BASE" && pnpm run lint-file --no-inline-config --no-ignore --fix "$FULLTARGET" ) | ||
rm "$TARGET/eslint.config.mjs" | ||
|
||
echo "Changing JS translation function call to avoid bad minification..." | ||
pnpm --package=jscodeshift dlx jscodeshift -t ./bin/sync-newspack-blocks-formatter.js --extensions=js $TARGET | ||
|
||
# Add temporary PHPCS config file. | ||
PHPCSSTANDARDFILE="$TARGET/phpcs.tmp.xml" | ||
cat > "$PHPCSSTANDARDFILE" <<EOF | ||
<?xml version="1.0"?> | ||
<ruleset> | ||
<rule ref="Jetpack.Functions.I18n"> | ||
<properties> | ||
<property name="text_domain" value="jetpack-mu-wpcom" /> | ||
</properties> | ||
</rule> | ||
<rule ref="WordPress.Utils.I18nTextDomainFixer"> | ||
<properties> | ||
<property name="old_text_domain" type="array"> | ||
<element value="newspack-blocks" /> | ||
</property> | ||
<property name="new_text_domain" value="jetpack-mu-wpcom" /> | ||
</properties> | ||
</rule> | ||
</ruleset> | ||
EOF | ||
echo "Changing PHP textdomain to match jetpack-mu-wpcom..." | ||
../../../vendor/bin/phpcbf --standard=./.phpcs.dir.xml --filter=../../../vendor/automattic/jetpack-phpcs-filter/src/PhpcsFilter.php --runtime-set jetpack-filter-no-ignore -q $TARGET | ||
|
||
"$BASE"/vendor/bin/phpcbf --standard="$PHPCSSTANDARDFILE" "$TARGET" | ||
rm "$PHPCSSTANDARDFILE" | ||
|
||
# Add textdomain to block.json | ||
echo "Adding textdomain to all block.json files..." | ||
for block_json_file in "$TARGET"/blocks/*/block.json; do | ||
TMPFILE=$(mktemp) | ||
jq --tab '. += {"textdomain": "jetpack-mu-wpcom"}' "$block_json_file" > "$TMPFILE" | ||
mv "$TMPFILE" "$block_json_file" | ||
done | ||
echo Sync done. |
4 changes: 4 additions & 0 deletions
4
projects/packages/jetpack-mu-wpcom/changelog/update-synced_newspack_blocks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Significance: minor | ||
Type: changed | ||
|
||
Newspack Blocks: Updated to version 4.5.2. |
46 changes: 23 additions & 23 deletions
46
projects/packages/jetpack-mu-wpcom/src/features/newspack-blocks/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 0 additions & 8 deletions
8
...kages/jetpack-mu-wpcom/src/features/newspack-blocks/synced-newspack-blocks/.phpcs.dir.xml
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.