Skip to content

Instantly share code, notes, and snippets.

@uglyrobot
Last active September 14, 2017 07:28
Show Gist options
  • Save uglyrobot/e872d1a9efc122b6bae2 to your computer and use it in GitHub Desktop.
Save uglyrobot/e872d1a9efc122b6bae2 to your computer and use it in GitHub Desktop.
A shell script for easy tagging and clean zip packaging of a WordPress Plugin/Theme in git.
#!/bin/bash
if [[ $# -eq 0 ]] ; then
echo "Please enter a version number:"
read VERSION
else
VERSION=$1
fi
if [[ -z "$VERSION" ]] ; then
echo "Sorry, I need a version number!"
exit 1
fi
#check that the plugin/theme version number matches what you provided. Note if multiple root php files have a "Version" header
# line it will only grab the first it finds. Also if a theme and you have a php file in root with "Version" could cause mismatch.
HEADERVERSION=`grep -m 1 --include={*.php,style.css} "Version" * | sed -e 's/^[ \t]*//' | awk -F' ' '{print $2}' | sed 's/[[:space:]]//g'`
if [ "$VERSION" != "$HEADERVERSION" ]; then echo "Version doesn't match the plugin/theme header. Exiting...."; exit 2; fi
#get the changelog message
echo "Enter your multiline changelog then ctrl-d on a new line when done:"
MSG=$(cat)
if [[ -z "$MSG" ]] ; then
echo "Sorry, I need a changelog for this release!"
exit 3
fi
#get plugin slug/name from current directory
NAME=${PWD##*/}
git tag -a $VERSION -m "$MSG"
git push origin $VERSION
git-archive-all --force-submodules --prefix $NAME/ ~/Desktop/$NAME-$VERSION.zip
echo "Tagged in bitbucket and Packaged as $NAME-$VERSION.zip on your desktop."
@samnajian
Copy link

Great script Aaron, thanks

@rheinardkorf
Copy link

Works sweet!

Also to add, if you've got your repos on different volumes, you can run git-archive-all via python without building it, put the python script on the same volume as your repos. Thanks to SH for suggesting this.

@igmoweb
Copy link

igmoweb commented Jul 20, 2015

Hey hey.

If anyone is interested, I forked this Gist in: https://gist.github.com/igmoweb/9815ef7a612ea653dbfb

The difference is that as soon as the new tag is generated, Google Chrome is opened in the project page (so you won't need to copy the WPMU ID number and paste it in the URL or go to projects in wpmu.org, etc. ), it just saves some time and avoid mistakes.

You only need to change the BROWSER_PATH variable (it's actually a command that opens the Browser)

Cheers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment