#!/usr/bin/env bash set -e # exit when error if ! npm owner ls | grep -q "$(npm whoami)" then printf "Release: Not an owner of the npm repo, ask for it" exit 1 fi currentBranch=$(git rev-parse --abbrev-ref HEAD) if [ "$currentBranch" != 'master' ]; then printf "Release: You must be on master" exit 1 fi if [[ -n $(git status --porcelain) ]]; then printf "Release: Working tree is not clean (git status)" exit 1 fi printf "\n\nRelease: update working tree" git pull origin master git fetch origin --tags printf "Release: npm install" npm install currentVersion=$(json version < package.json) # header echo "" echo "Release: current version is $currentVersion" echo "Release: a changelog will be generated only if a fix/feat/performance/breaking token is found in git log" echo "Release: you must choose a new ve.rs.ion (semver)" echo "Release: press q to exit the next screen" echo "" echo "" # preview changelog read -p "=> Release: press [ENTER] to view changes since latest version.." conventional-changelog --preset angular --output-unreleased | less # choose and bump new version # printf "\n\nRelease: Please enter the new chosen version > " printf "\n=> Release: please type the new chosen version > " read -e newVersion VERSION=$newVersion babel-node ./scripts/bump-package-version.js # build new version NODE_ENV=production VERSION=$newVersion npm run build # update changelog printf "\n\nRelease: update changelog" changelog=$(conventional-changelog -p angular) conventional-changelog --preset angular --infile CHANGELOG.md --same-file -r 0 # regenerate readme TOC printf "\n\nRelease: generate TOCS" npm run doctoc # git add and tag commitMessage="v$newVersion\n\n$changelog" git add src/lib/version.js package.json CHANGELOG.md README.md CONTRIBUTING.md echo "$commitMessage" | git commit --file - git tag "v$newVersion" printf "\n\nRelease: almost done, check everything in another terminal tab.\n" read -p "=> Release: when ready, press [ENTER] to push to github and publish the package" printf "\n\nRelease: push to github, publish on npm" git push origin master git push origin --tags npm publish printf "Release: Package was published to npm."