`printf` displays everything on the same line, and with the way yarn itself outputs its error messages, it would override our custom messages on the terminal, preventing us to know why things failed. Using echo instead fixes the issue. Other fixes are `shellcheck` warnings (`read` without `-r` will fail on input containing `\`).
86 lines
2.3 KiB
Bash
Executable file
86 lines
2.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -e # exit when error
|
|
|
|
# When running through yarn, this variable is changed, preventing the publishing
|
|
# to actually work. We revert it to its default value.
|
|
export npm_config_registry='https://registry.npmjs.org/'
|
|
|
|
if ! npm owner ls | grep -q "$(npm whoami)"
|
|
then
|
|
echo "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
|
|
echo "Release: You must be on master"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "Release: Working tree is not clean (git status)"
|
|
exit 1
|
|
fi
|
|
|
|
echo
|
|
echo "Release: update working tree"
|
|
git pull origin master
|
|
git fetch origin --tags
|
|
|
|
echo "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 -rp "=> Release: press [ENTER] to view changes since latest version.."
|
|
|
|
conventional-changelog --preset angular --output-unreleased | less
|
|
|
|
# choose and bump new version
|
|
echo "=> Release: please type the new chosen version > "
|
|
read -re newVersion
|
|
VERSION=$newVersion babel-node ./scripts/bump-package-version.js
|
|
|
|
# build new version
|
|
NODE_ENV=production VERSION=$newVersion npm run build
|
|
|
|
# update changelog
|
|
echo
|
|
echo "Release: update changelog"
|
|
changelog=$(conventional-changelog -p angular)
|
|
conventional-changelog --preset angular --infile CHANGELOG.md --same-file -r 0
|
|
|
|
# regenerate readme TOC
|
|
echo
|
|
echo "Release: 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"
|
|
|
|
echo
|
|
echo "Release: almost done, check everything in another terminal tab."
|
|
read -rp "=> Release: when ready, press [ENTER] to push to github and publish the package"
|
|
|
|
echo
|
|
echo "Release: push to github, publish on npm"
|
|
git push origin master
|
|
git push origin --tags
|
|
npm publish
|
|
|
|
echo "Release: Package was published to npm."
|