1
Fork 0

try to leave in saner state in case of failure

This commit is contained in:
Conduitry 2018-10-08 08:25:33 -04:00
parent 7fe0120867
commit 12650efc5b

View file

@ -1,14 +1,11 @@
# bail on failures
# get ready
set -e
# go to root of repository
cd "$(git rev-parse --show-toplevel)"
# get commit id
ORIG_HEAD="$(git symbolic-ref HEAD)"
ORIG_COMMIT="$(git rev-parse HEAD)"
# extract version from package.json, and remove scripts.prepare
ORIG_PKG="$(cat package.json)"
cp package.json package.json_orig
PKG_VERSION="$(node -e '
const fs = require("fs");
const pkg = JSON.parse(fs.readFileSync("package.json"));
@ -19,23 +16,24 @@ PKG_VERSION="$(node -e '
console.log(pkg.version);
')"
# determine current branch name, and create new temporary branch
ORIG_BRANCH="$(git symbolic-ref --short HEAD)"
TEMP_BRANCH="RELEASE_${PKG_VERSION}_$(date +'%Y%m%d%H%M%S')"
# create new temporary branch
TEMP_BRANCH="NPM2GIT_${PKG_VERSION}_$(date +'%Y%m%d%H%M%S')"
git checkout --orphan="${TEMP_BRANCH}"
git rm --cached -rf .
# track the files that should be included in the published package
# commit the files that should be included in the published package
PKG_TAR="$(npm pack | tail -n 1)"
tar tf "${PKG_TAR}" | cut -c 9- | xargs -d '\n' git add -f
rm "${PKG_TAR}"
# commit and tag
git commit -m "v${PKG_VERSION} @ ${ORIG_COMMIT}"
git tag "v${PKG_VERSION}" -am "v${PKG_VERSION} @ ${ORIG_COMMIT}"
# return to original state
git reset "${ORIG_BRANCH}"
git checkout "${ORIG_BRANCH}"
cat <<< "${ORIG_PKG}" > package.json
rm "${PKG_TAR}"
mv -f package.json_orig package.json
git symbolic-ref HEAD "${ORIG_HEAD}"
git reset
# tag commit
git tag "v${PKG_VERSION}" "${TEMP_BRANCH}" -am "v${PKG_VERSION} @ ${ORIG_COMMIT}"
# delete temporary branch
git branch -D "${TEMP_BRANCH}"