first commit

This commit is contained in:
2024-07-15 11:28:08 +02:00
commit f52d538ea5
21891 changed files with 6161164 additions and 0 deletions

View File

@@ -0,0 +1,16 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$PACKAGE_VERSION" ]]; then
echo "Missing PACKAGE_VERSION env var"
exit 1
fi
if grep -q "Beta tag:" ./readme.txt
then
echo "Replace existing beta tag in readme file"
sed -i -E "s/Beta tag: .*/Beta tag: ${PACKAGE_VERSION}/g" ./readme.txt
else
echo "Add beta tag to readme file"
sed -i -E '/^Stable tag: .*/a\'$'\n'"Beta tag: ${PACKAGE_VERSION}$(printf '\n\r')" ./readme.txt
fi

View File

@@ -0,0 +1,29 @@
'use strict';
const fs = require('fs');
const wpEnv = require('../../.wp-env.json');
const { PHP_VERSION, WP_CORE_VERSION } = process.env;
if (!PHP_VERSION) {
console.error('missing env var PHP_VERSION');
process.exit(1);
return;
}
if (!WP_CORE_VERSION) {
console.error('missing env var WP_CORE_VERSION');
process.exit(1);
return;
}
let wpCore = null;
if (WP_CORE_VERSION !== 'latest') {
wpCore = `WordPress/WordPress#${WP_CORE_VERSION}`;
}
wpEnv.phpVersion = PHP_VERSION;
wpEnv.core = wpCore;
fs.writeFileSync('.wp-env.json', JSON.stringify(wpEnv, null, 4));

View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$PACKAGE_VERSION" ]]; then
echo "Missing PACKAGE_VERSION env var"
exit 1
fi
PLUGIN_ZIP_FILENAME="elementor-${PACKAGE_VERSION}.zip"
npx grunt build
mv build elementor
zip -r $PLUGIN_ZIP_FILENAME elementor
echo "PLUGIN_ZIP_FILENAME=${PLUGIN_ZIP_FILENAME}" >> $GITHUB_ENV

View File

@@ -0,0 +1,13 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$PACKAGE_VERSION" ]]; then
echo "Missing PACKAGE_VERSION env var"
exit 1
fi
bash "${GITHUB_WORKSPACE}/.github/scripts/set-git-user.sh"
echo "Commit and push bump version ${PACKAGE_VERSION}"
git commit -am "Bump ${PACKAGE_VERSION}"
git push

View File

@@ -0,0 +1,51 @@
'use strict';
const { repoToOwnerAndOwner } = require('./repo-utils');
const { Octokit } = require("@octokit/core");
const { REPOSITORY, HEAD_BRANCH_NAME, BASE_TAG_NAME, TOKEN } = process.env;
if (!TOKEN) {
console.error('missing TOKEN env var');
process.exit(1);
return;
}
if (!BASE_TAG_NAME) {
console.error('missing BASE_TAG_NAME env var');
process.exit(1);
return;
}
if (!HEAD_BRANCH_NAME) {
console.error('missing HEAD_BRANCH_NAME env var');
process.exit(1);
return;
}
if (!REPOSITORY) {
console.error('missing REPOSITORY env var');
process.exit(1);
return;
}
const octokit = new Octokit({ auth: TOKEN });
(async () => {
try {
const { owner, repo } = repoToOwnerAndOwner(REPOSITORY);
const res = await octokit.request('GET /repos/{owner}/{repo}/compare/{base}...{head}', {
owner,
repo,
base: BASE_TAG_NAME,
head: HEAD_BRANCH_NAME,
});
const compareStatus = res.data.status;
console.log(`Tag: ${BASE_TAG_NAME} '${compareStatus}' to branch: ${HEAD_BRANCH_NAME}`);
if (compareStatus !== 'identical') {
process.exit(1);
}
} catch (err) {
console.error(`Failed to compare tag: ${BASE_TAG_NAME} to branch: ${HEAD_BRANCH_NAME} error: ${err.message}`);
process.exit(1);
}
})();

View File

@@ -0,0 +1,12 @@
#!/bin/bash
if [[ -z "$PACKAGE_VERSION" ]]; then
echo "Missing PACKAGE_VERSION env var"
exit 1
fi
bash "${GITHUB_WORKSPACE}/.github/scripts/set-git-user.sh"
echo "Create tag v${PACKAGE_VERSION}"
git tag "v${PACKAGE_VERSION}"
git push origin "v${PACKAGE_VERSION}"

View File

@@ -0,0 +1,54 @@
'use strict';
const fs = require('fs');
const { Octokit } = require('@octokit/core');
const { repoToOwnerAndOwner } = require('./repo-utils');
const { REPOSITORY, HEAD_BRANCH_NAME, BASE_TAG_NAME, TOKEN } = process.env;
if (!TOKEN) {
console.error('missing TOKEN env var');
process.exit(1);
return;
}
if (!REPOSITORY) {
console.error('missing REPOSITORY env var');
process.exit(1);
return;
}
if (!HEAD_BRANCH_NAME) {
console.error('missing HEAD_BRANCH_NAME env var');
process.exit(1);
return;
}
if (!BASE_TAG_NAME) {
console.error('missing BASE_TAG_NAME env var');
process.exit(1);
return;
}
const octokit = new Octokit({ auth: TOKEN });
const { owner, repo } = repoToOwnerAndOwner(REPOSITORY);
(async () => {
try {
const res = await octokit.request('GET /repos/{owner}/{repo}/compare/{base}...{head}', {
owner,
repo,
base: BASE_TAG_NAME,
head: HEAD_BRANCH_NAME,
});
const prAndVerifiedCommits = res.data.commits
.filter(({ commit }) => commit.verification.verified)
.map(({ commit }) => commit.message)
.map(message => message.split('\n')[0])
.filter((message) => /\(#\d{1,72}\)/.test(message))
.filter((message) => !message.startsWith('Internal:'));
const markdown = prAndVerifiedCommits.map((message) => `* ${message}`).join('\n');
fs.writeFileSync('temp-changelog.txt', markdown);
} catch (err) {
process.exit(1);
}
})();

View File

@@ -0,0 +1,12 @@
'use strict';
const packageJson = require('../../package.json');
const { last_beta_version = '', version } = packageJson;
const semver = require('semver');
(() => {
const versionOfBeta = last_beta_version.split('-')[0];
if (versionOfBeta && semver.gt(versionOfBeta, version)) {
console.log(last_beta_version);
}
})();

View File

@@ -0,0 +1,28 @@
'use strict';
const marked = require("marked");
const fs = require('fs');
const { VERSION } = process.env;
if (!VERSION) {
console.error('missing VERSION env var');
process.exit(1);
return;
}
(async () => {
try {
const changelogText = fs.readFileSync('readme.txt', 'utf-8');
const data = marked.lexer(changelogText);
const headerIndex = data.findIndex((section) => section.type === 'paragraph' && section.text.startsWith(`= ${VERSION}`));
if (headerIndex === -1) {
console.error(`Failed to find version: ${VERSION} in readme.txt file`);
process.exit(1);
return;
}
const versionLog = data[headerIndex + 1].raw;
fs.writeFileSync('temp-changelog-from-readme.txt', versionLog);
} catch (err) {
process.exit(1);
}
})();

View File

@@ -0,0 +1,14 @@
#!/bin/bash
set -eo pipefail
if [ -z "$INPUT_VERSION" ];
then
PACKAGE_VERSION=$(node -p "require('./package.json').version")
npm install --no-package-lock --no-save semver@7.3.4
NEXT_PACKAGE_VERSION=$(npx semver $PACKAGE_VERSION -i minor)
RELEASE_BRANCH="release/${NEXT_PACKAGE_VERSION}"
else
echo "Version var is set to ${INPUT_VERSION}"
RELEASE_BRANCH="release/${INPUT_VERSION}"
fi
echo "RELEASE_BRANCH=${RELEASE_BRANCH}" >> $GITHUB_ENV

View File

@@ -0,0 +1,39 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$SVN_USERNAME" ]]; then
echo "Set the SVN_USERNAME secret"
exit 1
fi
if [[ -z "$SVN_PASSWORD" ]]; then
echo "Set the SVN_PASSWORD secret"
exit 1
fi
if [[ -z "$PLUGIN_VERSION" ]]; then
echo "Set the PLUGIN_VERSION env var"
exit 1
fi
echo "Publish version: ${PLUGIN_VERSION}"
ELEMENTOR_PATH="$GITHUB_WORKSPACE/elementor"
SVN_PATH="$GITHUB_WORKSPACE/svn"
cd $ELEMENTOR_PATH
mkdir -p $SVN_PATH
cd $SVN_PATH
svn co https://plugins.svn.wordpress.org/elementor/trunk
echo "Preparing files"
cd $SVN_PATH/trunk
cp $ELEMENTOR_PATH/readme.txt .
svn status
echo "Commit readme file to trunk"
svn ci readme.txt -m "Upload v${PLUGIN_VERSION}" --no-auth-cache --non-interactive --username "$SVN_USERNAME" --password "$SVN_PASSWORD"
echo "Copy files from trunk to tag ${PLUGIN_VERSION}"
svn cp https://plugins.svn.wordpress.org/elementor/trunk https://plugins.svn.wordpress.org/elementor/tags/${PLUGIN_VERSION} --message "Tagged ${PLUGIN_VERSION}" --no-auth-cache --non-interactive --username "$SVN_USERNAME" --password "$SVN_PASSWORD"
svn update

View File

@@ -0,0 +1,54 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$SVN_USERNAME" ]]; then
echo "Set the SVN_USERNAME secret"
exit 1
fi
if [[ -z "$SVN_PASSWORD" ]]; then
echo "Set the SVN_PASSWORD secret"
exit 1
fi
if [[ -z "$PLUGIN_VERSION" ]]; then
echo "Set the PLUGIN_VERSION env var"
exit 1
fi
echo "Publish version: ${PLUGIN_VERSION}"
ELEMENTOR_PATH="$GITHUB_WORKSPACE/elementor"
SVN_PATH="$GITHUB_WORKSPACE/svn"
cd $ELEMENTOR_PATH
mkdir -p $SVN_PATH
cd $SVN_PATH
echo "Checkout from SVN"
svn co https://plugins.svn.wordpress.org/elementor/trunk
echo "Clean trunk folder"
cd $SVN_PATH/trunk
find . -maxdepth 1 -not -name ".svn" -not -name "." -not -name ".." -exec rm -rf {} +
echo "Copy files"
rsync -ah --progress $ELEMENTOR_PATH/* $SVN_PATH/trunk
echo "Preparing files"
cd $SVN_PATH/trunk
echo "svn delete"
svn status | grep -v '^.[ \t]*\\..*' | { grep '^!' || true; } | awk '{print $2}' | xargs -r svn delete;
echo "svn add"
svn status | grep -v '^.[ \t]*\\..*' | { grep '^?' || true; } | awk '{print $2}' | xargs -r svn add;
svn status
echo "Commit files to trunk"
svn ci -m "Upload v${PLUGIN_VERSION}" --no-auth-cache --non-interactive --username "$SVN_USERNAME" --password "$SVN_PASSWORD"
echo "Copy files from trunk to tag ${PLUGIN_VERSION}"
svn cp https://plugins.svn.wordpress.org/elementor/trunk https://plugins.svn.wordpress.org/elementor/tags/${PLUGIN_VERSION} --message "Tagged ${PLUGIN_VERSION}" --no-auth-cache --non-interactive --username "$SVN_USERNAME" --password "$SVN_PASSWORD"
svn update

View File

@@ -0,0 +1,4 @@
#!/bin/bash
set -eo pipefail
sed -i -E '/^Beta tag:/d' ./readme.txt

View File

@@ -0,0 +1,41 @@
'use strict';
module.exports.repoToOwnerAndOwner = (repository = '') => {
const [owner, repo] = repository.split('/');
return { owner, repo };
};
module.exports.mergeBranch = async (auth, owner, repo, base, head, commitMessage) => {
const { Octokit } = require("@octokit/core");
const octokit = new Octokit({ auth });
try {
await octokit.request('POST /repos/{owner}/{repo}/merges', {
owner,
repo,
base,
head,
commit_message: commitMessage
});
} catch (err) {
err.head = head;
err.base = base;
throw err;
}
}
const getBranches = async (auth, owner, repo) => {
const { Octokit } = require("@octokit/core");
const octokit = new Octokit({ auth });
return await octokit.request('GET /repos/{owner}/{repo}/branches?per_page={per_page}', {
owner,
repo,
per_page: 100,
});
};
module.exports.getFeatureBranches = async (auth, owner, repo) => {
const res = await getBranches(auth, owner, repo);
return res.data.map(({ name }) => name).filter((name) => name.startsWith('feature/'));
}

View File

@@ -0,0 +1,22 @@
#!/bin/bash
TEMPLATES_FILE_NAMES=`ls ${GITHUB_WORKSPACE}/tests/lighthouse/templates/*.json`
max_exit=0
set_max_exit() {
for i in "${PIPESTATUS[@]}"; do
[ "$i" -gt "$max_exit" ] && max_exit=$i
done
}
for TEMPLATE_FILE_NAME in $TEMPLATES_FILE_NAMES
do
TEMPLATE_NAME=$(basename "$TEMPLATE_FILE_NAME" .json)
export TEMPLATE_NAME=${TEMPLATE_NAME}
npx lhci collect --url="http://localhost:8889/${TEMPLATE_NAME}/"
npx lhci assert
set_max_exit
npx lhci upload --outputDir="${GITHUB_WORKSPACE}/.lighthouseci/reports/${TEMPLATE_NAME}/"
done
exit "$max_exit"

View File

@@ -0,0 +1,10 @@
#!/bin/bash
TEMPLATES_FILE_NAMES=`ls ${GITHUB_WORKSPACE}/tests/lighthouse/templates/*.json`
mkdir -p .lighthouseci/dumps
for TEMPLATE_FILE_NAME in $TEMPLATES_FILE_NAMES
do
TEMPLATE_NAME=$(basename "$TEMPLATE_FILE_NAME" .json)
wget --directory-prefix=.lighthouseci/dumps/${TEMPLATE_NAME} --mirror --convert-links --adjust-extension --page-requisites --no-parent --no-host-directories --restrict-file-names=windows http://localhost:8889/${TEMPLATE_NAME}/
done

View File

@@ -0,0 +1,6 @@
#!/bin/bash
set -eo pipefail
echo "Set git bot user"
git config user.name ${MAINTAIN_USERNAME}
git config user.email ${MAINTAIN_EMAIL}

View File

@@ -0,0 +1,26 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$SLACK_TOKEN" ]]; then
echo "Missing SLACK_TOKEN env var"
exit 1
fi
if [[ -z "$PACKAGE_VERSION" ]]; then
echo "Missing PACKAGE_VERSION env var"
exit 1
fi
if [[ -z "$SLACK_CHANNELS" ]]; then
echo "Missing SLACK_CHANNELS env var"
exit 1
fi
SLACK_CHANNELS_ARRAY=(`echo $SLACK_CHANNELS | sed 's/,/\n/g'`)
SLACK_BOT_NAME="ElementorBot"
messageText="@channel Elementor \`v${PACKAGE_VERSION}\` has been released! Saddle up partners!"
for CHANNEL in "${SLACK_CHANNELS_ARRAY[@]}"
do
curl -X POST "https://slack.com/api/chat.postMessage" -d "username=${SLACK_BOT_NAME}&token=${SLACK_TOKEN}&channel=${CHANNEL}&text=${messageText}&link_names=true"
done

View File

@@ -0,0 +1,22 @@
#!/bin/bash
bash "${GITHUB_WORKSPACE}/.github/scripts/set-git-user.sh"
npm i semver@7.3.4 --no-package-lock --no-save
PACKAGE_VERSION=$(node -p "require('./package.json').version")
NEXT_PACKAGE_VERSION=$(npx semver $PACKAGE_VERSION -i minor)
NEXT_RELEASE_BRANCH="release/${NEXT_PACKAGE_VERSION}"
git checkout "${NEXT_RELEASE_BRANCH}"
if [ $? -eq 0 ]; then
git merge origin/develop
git push
git checkout developer-edition
git merge "${NEXT_RELEASE_BRANCH}"
git push
echo "NEXT_RELEASE_BRANCH=${NEXT_RELEASE_BRANCH}" >> $GITHUB_ENV
else
git checkout developer-edition
git merge origin/develop
git push
fi

View File

@@ -0,0 +1,26 @@
#!/bin/bash
set -eo pipefail
bash "${GITHUB_WORKSPACE}/.github/scripts/set-git-user.sh"
npm i semver@7.3.4 --no-package-lock --no-save
PACKAGE_VERSION=$(node -p "require('./package.json').version")
NEXT_PACKAGE_VERSION=$(npx semver $PACKAGE_VERSION -i minor)
NEXT_RELEASE_BRANCH="release/${NEXT_PACKAGE_VERSION}"
# Merge master -> develop
git checkout develop
git merge origin/master
git push origin develop
# Merge develop -> next release
git checkout "${NEXT_RELEASE_BRANCH}"
git merge origin/develop
git push origin "${NEXT_RELEASE_BRANCH}"
# Merge next release -> developer-edition
git checkout developer-edition
git merge "${NEXT_RELEASE_BRANCH}"
git push origin developer-edition
echo "NEXT_RELEASE_BRANCH=${NEXT_RELEASE_BRANCH}" >> $GITHUB_ENV

View File

@@ -0,0 +1,37 @@
'use strict';
const {
repoToOwnerAndOwner,
getFeatureBranches,
mergeBranch,
} = require('./repo-utils');
const { REPOSITORY, TOKEN } = process.env;
const TARGET_BRANCH = 'developer-edition';
if (!TOKEN) {
console.error('missing TOKEN env var');
process.exit(1);
return;
}
if (!REPOSITORY) {
console.error('missing REPOSITORY env var');
process.exit(1);
return;
}
const { owner, repo } = repoToOwnerAndOwner(REPOSITORY);
(async () => {
try {
const featureBranches = await getFeatureBranches(TOKEN, owner, repo);
for (const branchName of featureBranches) {
await mergeBranch(TOKEN, owner, repo, TARGET_BRANCH, branchName, `Auto merge feature branch: ${branchName}`);
}
} catch (err) {
console.error(`Failed to merge feature branches to: ${TARGET_BRANCH} branch ${err.head ? `from: ${err.head} branch` : ''} error: ${err.message}`);
process.exit(1);
}
})();

View File

@@ -0,0 +1,41 @@
'use strict';
const {
repoToOwnerAndOwner,
getFeatureBranches,
mergeBranch,
} = require('./repo-utils');
const { REPOSITORY, TOKEN, NEXT_RELEASE_BRANCH } = process.env;
if (!TOKEN) {
console.error('missing TOKEN env var');
process.exit(1);
return;
}
if (!REPOSITORY) {
console.error('missing REPOSITORY env var');
process.exit(1);
return;
}
if (!NEXT_RELEASE_BRANCH) {
console.error('missing NEXT_RELEASE_BRANCH env var');
process.exit(1);
return;
}
const { owner, repo } = repoToOwnerAndOwner(REPOSITORY);
(async () => {
try {
const featureBranches = await getFeatureBranches(TOKEN, owner, repo);
for (const branchName of featureBranches) {
await mergeBranch(TOKEN, owner, repo, branchName, NEXT_RELEASE_BRANCH, `Auto merge ${NEXT_RELEASE_BRANCH} branch into feature branch: ${branchName}`);
}
} catch (err) {
console.error(`Failed to merge ${NEXT_RELEASE_BRANCH} branch into ${err.base || ''} error: ${err.message}`);
process.exit(1);
}
})();

View File

@@ -0,0 +1,57 @@
'use strict';
const semverInc = require('semver/functions/inc');
const packageJson = require('../../package.json');
const fs = require('fs');
const preId = process.argv[2];
if (!['dev', 'beta'].includes(preId)) {
console.error('missing argument dev or beta mode');
process.exit(1);
return;
}
const bumpVersion = (relativeVersion, lastVersionTagName, bumpsFromCurrentVersion = 1) => {
const lastVersion = packageJson[lastVersionTagName] || '';
let expectedVersion = relativeVersion;
(new Array(bumpsFromCurrentVersion).fill(1)).forEach(() => {
expectedVersion = semverInc(expectedVersion, 'minor');
});
let currentLastVersionNumber = 0;
if (lastVersion) {
const splitVersion = lastVersion.split(`-${preId}`);
if (splitVersion[0] === expectedVersion) {
const currentLastVersion = splitVersion[splitVersion.length - 1];
currentLastVersionNumber = Number(currentLastVersion);
if (Number.isNaN(currentLastVersionNumber)) {
console.error(`invalid ${preId} version: ${currentLastVersion}`);
process.exit(1);
return;
}
}
}
const newVersion = `${expectedVersion}-${preId}${currentLastVersionNumber + 1}`;
packageJson[lastVersionTagName] = newVersion;
fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 4));
console.log(newVersion);
}
if (preId === 'beta') {
const relativeVersion = packageJson.version;
bumpVersion(relativeVersion, 'last_beta_version');
return;
}
if (preId === 'dev') {
const lastBetaVersion = (() => {
const attrValue = packageJson.last_beta_version;
if (!attrValue) {
return '';
}
return attrValue.split('-')[0];
})();
const relativeVersion = lastBetaVersion || packageJson.version;
bumpVersion(relativeVersion, 'last_dev_version');
}

View File

@@ -0,0 +1,9 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$PACKAGE_VERSION" ]]; then
echo "Missing PACKAGE_VERSION env var"
exit 1
fi
sed -i -E "s/Stable tag: .*/Stable tag: ${PACKAGE_VERSION}/g" ./readme.txt

View File

@@ -0,0 +1,10 @@
#!/bin/bash
set -eo pipefail
if [[ -z "$PACKAGE_VERSION" ]]; then
echo "Missing PACKAGE_VERSION env var"
exit 1
fi
sed -i -E "s/Version: .*/Version: ${PACKAGE_VERSION}/g" elementor.php
sed -i -E "s/ELEMENTOR_VERSION', '.*'/ELEMENTOR_VERSION', '${PACKAGE_VERSION}'/g" elementor.php