securityos/node_modules/lunr/build/release.sh

80 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
file_has_changed () {
if [ ! -f $1 ]; then
return 1
fi
for f in `git ls-files --modified`; do
[[ "$f" == "$1" ]] && return 0
done
return 1
}
version_is_unique () {
for v in `git tag -l`; do
[[ "$v" == "v$1" ]] && return 1
done
return 0
}
on_master_branch () {
[[ $(git symbolic-ref --short -q HEAD) == "master" ]] && return 0
return 1
}
version=$(cat VERSION)
previous_version=$(git describe --abbrev=0)
if ! on_master_branch; then
echo -e "\033[0;31mRefusing to release from non master branch.\033[0m"
exit 1
fi
if ! file_has_changed "VERSION"; then
echo -e "\033[0;31mRefusing to release because VERSION has not changed.\033[0m"
exit 1
fi
if ! file_has_changed "CHANGELOG.md"; then
echo -e "\033[0;31mRefusing to release because CHANGELOG.md has not been updated.\033[0m"
exit 1
fi
if ! file_has_changed "package.json"; then
echo -e "\033[0;31mRefusing to release because package.json has not been updated.\033[0m"
exit 1
fi
if ! version_is_unique $version; then
echo -e "\033[0;31mRefusing to release because VERSION is not unique.\033[0m"
exit 1
fi
echo -e "\033[1mAbout to release v$version with the following changes:\033[0m"
git log --date=short --pretty=format:"%ad %h%x09%an%x09%s" $previous_version..HEAD
echo
echo -e "\033[1mThe following files will be part of the release commit:\033[0m"
git ls-files --modified
echo
read -e -p "Are you sure you want to release? " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo -e "\033[0;32mReleasing...\033[0m"
echo
git commit -a -m "Build version $version"
git tag -a v$version -m "Version $version"
git push origin master
git push --tags
npm publish
else
echo -e "\033[0;31mCancelling...\033[0m"
fi