themes-wordpress/deploy-dotorg.sh

103 lines
2.8 KiB
Bash
Raw Normal View History

2021-11-10 17:50:35 +00:00
#!/bin/bash
# Make sure SVN credentials and project slug are set
if [[ -z "$SVN_USERNAME" ]] && [[ $1 != "preview" ]]; then
2021-11-10 17:50:35 +00:00
echo "Set the SVN_USERNAME secret"
exit 1
fi
if [[ -z "$SVN_PASSWORD" ]] && [[ $1 != "preview" ]]; then
2021-11-10 17:50:35 +00:00
echo "Set the SVN_PASSWORD secret"
exit 1
fi
rm -rf ./deploy
# Look into all the themes we expect to deploy
declare -a THEMES_TO_DEPLOY=(
"archeo"
"bibimbap"
"blockbase"
"disco"
2021-11-10 17:50:35 +00:00
"geologist"
"lettre"
"livro"
2021-11-10 17:50:35 +00:00
"mayland-blocks"
"pendant"
2022-09-27 08:44:58 +00:00
"pixl"
2021-11-10 17:50:35 +00:00
"quadrat"
"rainfall"
"remote"
"seedlet-blocks"
"skatepark"
"stewart"
"upsidedown"
"videomaker"
2022-07-18 18:04:13 +00:00
"vivre"
"zoologist"
2021-11-10 17:50:35 +00:00
)
for THEME_SLUG in ${THEMES_TO_DEPLOY[@]} ; do
THEME_VERSION=$(cat ./${THEME_SLUG}/style.css \
| grep Version \
| head -1 \
| awk -F: '{ print $2 }' \
| sed 's/[",]//g' \
| sed 's/-wpcom//g' \
| tr -d '[[:space:]]')
# TODO: This does take into account the -wpcom appended to some theme versions.
# Ideally that can be removed from all of the themes versioning in this repository.
# I'm not convinced it's helpful...
printf "\n\nAttempting to deploy theme ${THEME_SLUG} version ${THEME_VERSION}\n"
SVN_URL="https://themes.svn.wordpress.org/${THEME_SLUG}/"
SVN_DIR="$PWD/deploy/${THEME_SLUG}"
svn checkout --depth immediates "$SVN_URL" "$SVN_DIR" --no-auth-cache --non-interactive > /dev/null
if [ ! -d "$SVN_DIR" ]; then
echo "No theme by that slug to be checked out. Probably not a theme. Moving on."
continue;
fi
if [ -d "$SVN_DIR/$THEME_VERSION" ]; then
rm -rf $SVN_DIR
echo "Release already exists. Moving on."
continue;
fi
directories=($SVN_DIR/*)
last_directory=${directories[${#directories[@]}-1]}
echo "➤ Copying previous version of theme '${THEME_SLUG}' to svn repository... "
svn update --set-depth infinity ${last_directory} --non-interactive
svn cp ${last_directory} $SVN_DIR/$THEME_VERSION
2021-11-10 17:50:35 +00:00
echo "➤ Copying theme '${THEME_SLUG}' version '${THEME_VERSION}' to svn repository... "
rsync -rc --delete --include=theme.json --exclude-from './dotorg-exclude.txt' ./$THEME_SLUG/ $SVN_DIR/$THEME_VERSION
2021-11-10 17:50:35 +00:00
# Remove the wpcom-specific tags used in some themes
find $SVN_DIR/$THEME_VERSION/style.css -type f -exec sed -i '' 's/, auto-loading-homepage//g' {} \;
# Remove files from the previous version
svn status $SVN_DIR/$THEME_VERSION | grep "^\!" | sed 's/^\! *//g' | xargs svn rm;
2021-11-10 17:50:35 +00:00
# Add the version to SVN
svn add $SVN_DIR/$THEME_VERSION --force --depth infinity -q > /dev/null
2021-11-10 17:50:35 +00:00
if [[ $1 == "preview" ]]; then
svn status $SVN_DIR
else
echo "➤ Committing files..."
svn commit $SVN_DIR -m "Update to version ${THEME_VERSION} from GitHub" --no-auth-cache --non-interactive --username ${SVN_USERNAME} --password ${SVN_PASSWORD} 2>&1 | grep 'svn: E'
if [[ $? -eq 0 ]]; then
echo 'Commit failed.'
exit 1
fi
fi
done