diff --git a/doc/deploy-manual.sh b/doc/deploy-manual.sh index ea73d79c5..5a2ca8009 100755 --- a/doc/deploy-manual.sh +++ b/doc/deploy-manual.sh @@ -9,8 +9,8 @@ if [[ "${TRAVIS_REPO_SLUG:-}" != "haskell/haskell-mode" ]]; then exit 0 fi -if [[ "${TRAVIS_BRANCH:-}" != "master" ]]; then - echo "TRAVIS_BRANCH is '${TRAVIS_BRANCH:-}' expected 'master'" +if [[ "${TRAVIS_BRANCH:-}" != "master" && "${TRAVIS_BRANCH:-}" != branch-* ]]; then + echo "TRAVIS_BRANCH is '${TRAVIS_BRANCH:-}' expected 'master' or 'branch-*'" echo "Manual deployment available only for 'master' branch" exit 0 fi @@ -21,13 +21,15 @@ if [[ -z "${GITHUB_DEPLOY_KEY_PASSPHRASE:-}" ]]; then exit 0 fi -# Note: GITHUB_DEPLOY_KEY_PASSPHRASE comes from 'secure' section in .travis.yml -cp haskell-mode-travis-deploy-key haskell-mode-travis-deploy-key-plain -chmod 0600 haskell-mode-travis-deploy-key-plain -ssh-keygen -f haskell-mode-travis-deploy-key-plain -P $GITHUB_DEPLOY_KEY_PASSPHRASE -p -N "" +if [[ ${GITHUB_DEPLOY_KEY_PASSPHRASE:-} != "skip" ]]; then + # Note: GITHUB_DEPLOY_KEY_PASSPHRASE comes from 'secure' section in .travis.yml + cp haskell-mode-travis-deploy-key haskell-mode-travis-deploy-key-plain + chmod 0600 haskell-mode-travis-deploy-key-plain + ssh-keygen -f haskell-mode-travis-deploy-key-plain -P $GITHUB_DEPLOY_KEY_PASSPHRASE -p -N "" -eval $(ssh-agent) -ssh-add haskell-mode-travis-deploy-key-plain + eval $(ssh-agent) + ssh-add haskell-mode-travis-deploy-key-plain +fi # Git setup, this commit should appear as if Travis made it export GIT_COMMITTER_EMAIL='travis@travis-ci.org' @@ -35,24 +37,43 @@ export GIT_COMMITTER_NAME='Travis CI' export GIT_AUTHOR_EMAIL='travis@travis-ci.org' export GIT_AUTHOR_NAME='Travis CI' +# Documentation directory name + +if [[ ${TRAVIS_BRANCH} == "master" ]]; then + DOCDIR="latest" +else + DOCDIR="${TRAVIS_BRANCH//branch-/}" +fi + HEAD_COMMIT=$(git rev-parse --short HEAD) if [ -d gh-pages-deploy ]; then rm -fr gh-pages-deploy fi -git clone --quiet --branch=gh-pages "git@github.com:haskell/haskell-mode.git" gh-pages-deploy +git clone --quiet --depth 1 --branch=gh-pages "git@github.com:haskell/haskell-mode.git" gh-pages-deploy cd gh-pages-deploy -git rm -qr manual/latest -cp -r ../html manual/latest -find manual/latest -name '*.html' -exec sed -i -e '/^<\/head>$/i\ +if [[ -d "manual/${DOCDIR}" ]]; then + git rm -qr "manual/${DOCDIR}" +fi + +cp -r ../html "manual/${DOCDIR}" +find "manual/${DOCDIR}" -name '*.html' -exec sed -i '~' -e '/^<\/head>$/i\ ' \{} \; -git add manual/latest -(git commit -m "Update manual from haskell/haskell-mode@${HEAD_COMMIT}" && git push origin gh-pages) || true +find "manual/${DOCDIR}" -name '*~' -exec rm \{} \; +git add "manual/${DOCDIR}" +if [[ ${GITHUB_DEPLOY_KEY_PASSPHRASE:-} != "skip" ]]; then + (git commit -m "Update manual for '${DOCDIR}' from haskell/haskell-mode@${HEAD_COMMIT}" && git push origin gh-pages) || true +else + echo "Update manual for '${DOCDIR}' from haskell/haskell-mode@${HEAD_COMMIT}" +fi cd .. -rm -fr gh-pages-deploy -eval $(ssh-agent -k) +if [[ ${GITHUB_DEPLOY_KEY_PASSPHRASE:-} != "skip" ]]; then + rm -fr gh-pages-deploy + eval $(ssh-agent -k) +fi + echo Done!