Created
September 22, 2012 18:28
-
-
Save BFTrick/3767319 to your computer and use it in GitHub Desktop.
WordPress Plugin Deploy Script
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
#! /bin/bash | |
# A modification of Dean Clatworthy's deploy script as found here: https://github.com/deanc/wordpress-plugin-git-svn | |
# The difference is that this script lives in the plugin's git repo & doesn't require an existing SVN repo. | |
# main config | |
PLUGINSLUG="______your-plugin-name______" | |
CURRENTDIR=`pwd` | |
MAINFILE="______your-plugin-name______.php" # this should be the name of your main php file in the wordpress plugin | |
# git config | |
GITPATH="$CURRENTDIR/" # this file should be in the base of your git repository | |
# svn config | |
SVNPATH="/tmp/$PLUGINSLUG" # path to a temp SVN repo. No trailing slash required and don't add trunk. | |
SVNURL="http://plugins.svn.wordpress.org/______your-plugin-name______/" # Remote SVN repo on wordpress.org, with no trailing slash | |
SVNUSER="______your-wp-username______" # your svn username | |
# Let's begin... | |
echo ".........................................." | |
echo | |
echo "Preparing to deploy wordpress plugin" | |
echo | |
echo ".........................................." | |
echo | |
# Check version in readme.txt is the same as plugin file | |
NEWVERSION1=`grep "^Stable tag" $GITPATH/readme.txt | awk -F' ' '{print $3}'` | |
echo "readme version: $NEWVERSION1" | |
NEWVERSION2=`grep "^Version" $GITPATH/$MAINFILE | awk -F' ' '{print $2}'` | |
echo "$MAINFILE version: $NEWVERSION2" | |
if [ "$NEWVERSION1" != "$NEWVERSION2" ]; then echo "Versions don't match. Exiting...."; exit 1; fi | |
echo "Versions match in readme.txt and PHP file. Let's proceed..." | |
cd $GITPATH | |
echo -e "Enter a commit message for this new version: \c" | |
read COMMITMSG | |
git commit -am "$COMMITMSG" | |
echo "Tagging new version in git" | |
git tag -a "$NEWVERSION1" -m "Tagging version $NEWVERSION1" | |
echo "Pushing latest commit to origin, with tags" | |
git push origin master | |
git push origin master --tags | |
echo | |
echo "Creating local copy of SVN repo ..." | |
svn co $SVNURL $SVNPATH | |
echo "Exporting the HEAD of master from git to the trunk of SVN" | |
git checkout-index -a -f --prefix=$SVNPATH/trunk/ | |
echo "Ignoring github specific & deployment script" | |
svn propset svn:ignore "deploy.sh | |
README.md | |
.git | |
.gitignore" "$SVNPATH/trunk/" | |
echo "Moving assets-wp-repo" | |
mkdir $SVNPATH/assets/ | |
mv $SVNPATH/trunk/assets-wp-repo/* $SVNPATH/assets/ | |
svn add $SVNPATH/assets/ | |
svn delete $SVNPATH/trunk/assets-wp-repo | |
echo "Changing directory to SVN" | |
cd $SVNPATH/trunk/ | |
# Add all new files that are not set to be ignored | |
svn status | grep -v "^.[ \t]*\..*" | grep "^?" | awk '{print $2}' | xargs svn add | |
echo "committing to trunk" | |
svn commit --username=$SVNUSER -m "$COMMITMSG" | |
echo "Updating WP plugin repo assets & committing" | |
cd $SVNPATH/assets/ | |
svn commit --username=$SVNUSER -m "Updating wp-repo-assets" | |
echo "Creating new SVN tag & committing it" | |
cd $SVNPATH | |
svn copy trunk/ tags/$NEWVERSION1/ | |
cd $SVNPATH/tags/$NEWVERSION1 | |
svn commit --username=$SVNUSER -m "Tagging version $NEWVERSION1" | |
echo "Removing temporary directory $SVNPATH" | |
rm -fr $SVNPATH/ | |
echo "*** FIN ***" |
I can report the same issue as @marcobarbosa. The problem seems to occur if the svn directory is left intact between deploys. If you delete the svn directory it works OK.
For a more robust solution:
NEWVERSION2=`grep "^Version" $GITPATH/$MAINFILE | awk -F' ' '{print $2}'`
should be:
NEWVERSION1=`grep "^Stable tag" $GITPATH/readme.txt | awk -F':' '{print $2}' | tr -d ' '`
and then also, this should be used:
NEWVERSION2=`grep "Version:" $GITPATH/$MAINFILE | awk -F':' '{print $2}' | tr -d ' '`
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@BFTrick Hey man, I'm using your super useful deploy script and I have a problem that sometimes when I deploy the plugin has a "trunk/" folder there when it shouldn't. Is there anything I could be doing wrong?