cd ~/Workspace/package-to-release
release-package.sh
cd ~/Workspace/compass
bump-package-branch.sh package-to-release COMPASS-123
Last active
December 4, 2019 15:54
-
-
Save mcasimir/ef9025d00ddf52ba7751231c8313564e to your computer and use it in GitHub Desktop.
scripts
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 | |
set -e | |
if [ -z "$1" ] | |
then | |
echo "usage bump-package PACKAGE_NAME [BRANCH_NAME]" | |
fi | |
package_name="$1" | |
function open_pr_url() { | |
github_url=`git remote -v | awk '/fetch/{print $2}' | sed -Ee 's#(git@|git://)#https://#' -e 's@com:@com/@' -e 's%\.git$%%' | awk '/github/'`; | |
branch_name=`git symbolic-ref HEAD | cut -d"/" -f 3,4`; | |
pr_url=$github_url"/compare/master..."$branch_name | |
echo $pr_url; | |
} | |
package_version=`npm info $package_name version` | |
package="${package_name}@${package_version}" | |
target_package_name=`cat package.json | jq -r .name` | |
read -p "Bumping ${package_name} to ${package_version} in ${target_package_name}. Are you sure? (Yy) " -n 1 -r | |
echo | |
if [[ ! $REPLY =~ ^[Yy]$ ]] | |
then | |
exit 1 | |
fi | |
repo=`git config --get remote.origin.url` | |
tmp=$(mktemp -d) | |
trap "rm -rf $tmp" EXIT | |
dest="$tmp/repo" | |
git clone $repo $dest | |
cd $dest | |
branch_name=${2:-$package} | |
git checkout -b $branch_name | |
npm ci | |
npm install $package | |
git add . | |
git commit -am "Bump ${package_name} to version ${package_version}" | |
git push origin HEAD | |
pr_url=$(open_pr_url) | |
echo | |
echo "Open PR:" | |
echo $pr_url |
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 | |
set -e | |
function get_changes { | |
firstTag=$(git tag | sort -r | head -1) | |
secondTag=$(git tag | sort -r | head -2 | awk '{split($0, tags, "\n")} END {print tags[1]}') | |
echo "Changes between ${secondTag} and ${firstTag}\n" | |
git log --pretty=format:' * %s' ${secondTag}..${firstTag} | |
} | |
function get_changes_since_last_tag { | |
last_tag=$(git tag | sort -r | head -1) | |
git log --pretty=format:' * %s' ${last_tag}..HEAD | |
} | |
function open_pr_url() { | |
github_url=`git remote -v | awk '/fetch/{print $2}' | sed -Ee 's#(git@|git://)#https://#' -e 's@com:@com/@' -e 's%\.git$%%' | awk '/github/'`; | |
branch_name=`git symbolic-ref HEAD | cut -d"/" -f 3,4`; | |
pr_url=$github_url"/compare/master..."$branch_name | |
echo $pr_url; | |
} | |
version=$1 | |
if [[ $version == "patch" || $version == "minor" || $version == "major" ]] ; then | |
echo | |
else | |
echo "Wrong version." | |
echo "USAGE: release-package {patch|minor|major}" | |
exit 1 | |
fi | |
repo=`git config --get remote.origin.url` | |
read -p "Releasing $repo to version $version. Are you sure? (Yy) " -n 1 -r | |
echo | |
if [[ ! $REPLY =~ ^[Yy]$ ]] | |
then | |
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 | |
fi | |
tmp=$(mktemp -d) | |
trap "rm -rf $tmp" EXIT | |
dest="$tmp/repo" | |
git clone $repo $dest | |
cd $dest | |
changes_since_last_tag=$(get_changes_since_last_tag) | |
if [ -z "$changes_since_last_tag" ] | |
then | |
echo "No changes since last tag. There is nothing to release." | |
fi | |
npm ci | |
npm version $version | |
git push --tags origin HEAD | |
npm publish | |
current_branch_name=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD) | |
if [[ $current_branch_name == "master" ]] ; then | |
cd - | |
git pull origin master | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment