#!/bin/bash # Enable nicer messaging for build status. BLUE_BOLD='\033[1;34m'; GREEN_BOLD='\033[1;32m'; RED_BOLD='\033[1;31m'; YELLOW_BOLD='\033[1;33m'; COLOR_RESET='\033[0m'; error () { echo -e "\nšŸ¤Æ ${RED_BOLD}$1${COLOR_RESET}\n" } status () { echo -e "\nšŸ‘©ā€šŸ’» ${BLUE_BOLD}$1${COLOR_RESET}\n" } success () { echo -e "\nāœ… ${GREEN_BOLD}$1${COLOR_RESET}\n" } warning () { echo -e "\n${YELLOW_BOLD}$1${COLOR_RESET}\n" } # Make sure there are no changes in the working tree. changed= if ! git diff --exit-code > /dev/null; then changed="file(s) modified" elif ! git diff --cached --exit-code > /dev/null; then changed="file(s) staged" fi if [ ! -z "$changed" ]; then git status error "ERROR: Cannot start pre-release with dirty working tree. ā˜ļø Commit your changes and try again." exit 1 fi status "Lets release WooCommerce Admin šŸŽ‰" status "What branch/commit would you like to base this release on?" echo -n "Branch/commit: " read refspec git checkout $refspec || { error "ERROR: Unable to checkout ${refspec}." ; exit 1; } success "Checked out ${refspec}" git pull origin ${refspec} success "Pulled latest commits" status "What version would you like to release?" echo -n "Version: " read release branch="release/${release}" exists=`git show-ref refs/heads/${branch}` if [ -n "$exists" ]; then error "ERROR: release branch already exists." exit 1 fi status "creating a release branch" git checkout -b $branch || { error "ERROR: Unable to create release branch." ; exit 1; } success "Release branch created: ${branch}" status "Bumping version to ${release}" npm --no-git-tag-version version $release || { error "ERROR: Invalid version number." ; exit 1; } success "Version bumped successfully" status "Run scripts to propagate version numbers and update dependencies." npm run bump-version status "Run docs script to make sure docs are updated." npm run docs status "Here are the changes so far. Make sure the following changes are reflected." echo "- docs/: folder will have changes to documentation, if any." echo "- package.json: new version number." echo "- woocommerce-admin.php: new version number." echo "- composer.json: new version number." echo "- readme.txt: new version number." echo "- src/FeaturePlugin.php: new version number." echo "- src/Composer/Package.php: new version number." echo "- package-lock.json: dependencies updated." echo -e "\n" echo -e "\n" git status