Last active
December 31, 2020 03:11
-
-
Save lens0021/c5afa42ffe730eee40e569a5d6af61ad to your computer and use it in GitHub Desktop.
This file contains hidden or 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
#!/bin/bash | |
set -euo pipefail; IFS=$'\n\t' | |
if [ $EUID != 0 ]; then | |
sudo TOOL="${TOOL:-phpunit}" bash "$0" "$@"; | |
exit "$?"; | |
fi | |
EXT=$1 | |
test EXT || exit | |
BASE_PATH="/home/nemo/git/femiwiki" | |
MEDIAWIKI_VERSION="$(git --git-dir "${BASE_PATH}/${EXT}"/.git branch --show-current)" | |
echo "Use ${MEDIAWIKI_VERSION} branch" | |
if [ -e src/"${MEDIAWIKI_VERSION}"/LocalSettings.php ]; then | |
rm src/"${MEDIAWIKI_VERSION}"/LocalSettings.php | |
fi | |
if [ ! -d src/"${MEDIAWIKI_VERSION}" ]; then | |
echo 'Trying to download MW...' | |
if [ "${MEDIAWIKI_VERSION}" == 'master' ]; then | |
git clone --recurse-submodules -b "${MEDIAWIKI_VERSION}" --depth 1 \ | |
https://gerrit.wikimedia.org/r/mediawiki/core src/"${MEDIAWIKI_VERSION}" | |
else | |
git clone -b "${MEDIAWIKI_VERSION}" --depth 1 \ | |
https://gerrit.wikimedia.org/r/mediawiki/core src/"${MEDIAWIKI_VERSION}" | |
fi | |
fi | |
if [ -e "${BASE_PATH}/${EXT}"/extension.json ]; then | |
TYPE=extension | |
else | |
TYPE=skin | |
fi | |
NAME=$(python -c 'import sys,json;print(json.loads(sys.stdin.read())["name"])' < "${BASE_PATH}/${EXT}"/extension.json) | |
if [ -e "src/${MEDIAWIKI_VERSION}/${TYPE}s/${NAME}" ]; then | |
echo 'purging...' | |
rm -rf "src/${MEDIAWIKI_VERSION}/${TYPE}s/${NAME}" > /dev/null | |
fi | |
cp -r "${BASE_PATH}/${EXT}" "src/${MEDIAWIKI_VERSION}/${TYPE}s/${NAME}" | |
if [ -e "src/${MEDIAWIKI_VERSION}/${TYPE}s/${NAME}/.github/workflows/.test-env" ]; then | |
# shellcheck disable=SC1090 | |
source "src/${MEDIAWIKI_VERSION}/${TYPE}s/${NAME}/.github/workflows/.test-env" | |
fi | |
DEPENDENCIES=$(echo "${DEPENDENCIES:-}" | tr " " "\n") | |
for dep in $(echo "$DEPENDENCIES" | tr " " "\n"); do | |
DEP_NAME=$(basename "${dep}") | |
if [ ! -d "src/${MEDIAWIKI_VERSION}/extensions/${DEP_NAME}" ]; then | |
git clone --recurse-submodules -b "${MEDIAWIKI_VERSION}" --depth 1 \ | |
https://gerrit.wikimedia.org/r/"${dep}" "src/${MEDIAWIKI_VERSION}/extensions/${DEP_NAME}" | |
fi | |
done | |
chmod 777 src/"${MEDIAWIKI_VERSION}" cache | |
chown -R nobody:nogroup src/"${MEDIAWIKI_VERSION}" cache | |
chown "$(id -u)":"$(id -g)" src/"${MEDIAWIKI_VERSION}" cache | |
if [ "${2:-}" == 'deps' ]; then | |
echo 'deps' | |
docker run \ | |
-e ZUUL_PROJECT=mediawiki/"${TYPE}s/${NAME}" \ | |
-v "$(pwd)"/cache:/cache \ | |
-v "$(pwd)"/src/"${MEDIAWIKI_VERSION}":/workspace/src \ | |
--rm \ | |
docker-registry.wikimedia.org/releng/quibble-stretch-php73:latest \ | |
--skip-zuul \ | |
--packages-source composer \ | |
--skip-install \ | |
--skip all \ | |
$DEPENDENCIES | |
elif [ "${TOOL}" == 'phpunit' ]; then | |
echo 'run quibble...' | |
if [ -e src/"${MEDIAWIKI_VERSION}"/composer.lock ]; then | |
echo '...without deps' | |
docker run \ | |
-e ZUUL_PROJECT=mediawiki/"${TYPE}s/${NAME}" \ | |
-v "$(pwd)"/cache:/cache \ | |
-v "$(pwd)"/src/"${MEDIAWIKI_VERSION}":/workspace/src \ | |
--rm \ | |
docker-registry.wikimedia.org/releng/quibble-stretch-php73:latest \ | |
--skip-zuul \ | |
--skip-deps \ | |
-c "php tests/phpunit/phpunit.php --group ${EXT}" \ | |
$DEPENDENCIES | |
else | |
echo '...with deps' | |
docker run \ | |
-e ZUUL_PROJECT=mediawiki/"${TYPE}s/${NAME}" \ | |
-v "$(pwd)"/cache:/cache \ | |
-v "$(pwd)"/src/"${MEDIAWIKI_VERSION}":/workspace/src \ | |
--rm \ | |
docker-registry.wikimedia.org/releng/quibble-stretch-php73:latest \ | |
--skip-zuul \ | |
--packages-source composer \ | |
-c "php tests/phpunit/phpunit.php --group ${EXT}" \ | |
$DEPENDENCIES | |
fi | |
elif [ "${TOOL}" == 'phan' ]; then | |
echo 'run phan...' | |
docker run \ | |
-e THING_SUBNAME="${TYPE}s/${NAME}" \ | |
-v "$(pwd)"/src/"${MEDIAWIKI_VERSION}":/mediawiki \ | |
--rm \ | |
docker-registry.wikimedia.org/releng/mediawiki-phan-php73:latest \ | |
--color | |
elif [ "${TOOL}" == 'cover' ]; then | |
docker run \ | |
-e ZUUL_PROJECT=mediawiki/"${TYPE}s/${NAME}" \ | |
-v "$(pwd)"/cache:/cache \ | |
-v "$(pwd)"/src/"${MEDIAWIKI_VERSION}":/workspace/src \ | |
docker-registry.wikimedia.org/releng/quibble-coverage:latest \ | |
--skip-zuul \ | |
--skip-deps \ | |
-c mwext-phpunit-coverage | |
else | |
echo "unknown command: ${0:-''} ${1:-''} ${2:-''}" | |
fi | |
rm -rf "src/${MEDIAWIKI_VERSION}/${TYPE}s/${NAME}" > /dev/null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment