Skip to content

Instantly share code, notes, and snippets.

@mcasimir
Last active December 4, 2019 15:54
Show Gist options
  • Save mcasimir/ef9025d00ddf52ba7751231c8313564e to your computer and use it in GitHub Desktop.
Save mcasimir/ef9025d00ddf52ba7751231c8313564e to your computer and use it in GitHub Desktop.
scripts
cd ~/Workspace/package-to-release

release-package.sh

cd ~/Workspace/compass

bump-package-branch.sh package-to-release COMPASS-123
#!/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
#!/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