diff --git a/.travis.yml b/.travis.yml index 57d8f1492..844a4bdd3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,12 @@ language: emacs-lisp env: matrix: - - EMACS=emacs23 - - EMACS=emacs24 - - EMACS=emacs-snapshot + - EMACS=emacs23 TARGET=check + - EMACS=emacs24 TARGET=check + - EMACS=emacs-snapshot TARGET=check + - EMACS=emacs24 TARGET=deploy-manual + global: + - secure: "ejv1+ub/v+Hm/23fhp4zLAHT3HiCG+YdDHai57LDe4LfEZCeGz4i/6LazbPbwm58v2YuKvMcdNshebc1s4A293ARJryPyFfW/8kEe+3hQ+cDxunNdHfqcS8SyhcDG0mrv7dqiVAtMJqB8qZb0c161KeEM8nyhC0wyQ+EZ5qJnzM=" matrix: allow_failures: @@ -27,9 +30,18 @@ install: sudo apt-get install -qq emacs-snapshot && sudo apt-get install -qq emacs-snapshot-el; fi + - if [ "$TARGET" = "deploy-manual" ]; then + curl -O http://ftp.gnu.org/gnu/texinfo/texinfo-5.2.tar.xz; + tar -xf texinfo-5.2.tar.xz; + cd texinfo-5.2; + ./configure; + make; + sudo make install; + cd ..; + fi script: - lsb_release -a && $EMACS --version && make EMACS=$EMACS check + lsb_release -a && $EMACS --version && make EMACS=$EMACS $TARGET notifications: email: false diff --git a/Makefile b/Makefile index 3906c693e..912130c02 100644 --- a/Makefile +++ b/Makefile @@ -118,41 +118,42 @@ info: haskell-mode.info dir dir: haskell-mode.info $(INSTALL_INFO) --dir=$@ $< -haskell-mode.info: haskell-mode.texi +haskell-mode.info: doc/haskell-mode.texi # Check if chapter order is same as node order @sed -n -e '/@chapter/ s/@code{\(.*\)}/\1/' \ -e 's/@chapter \(.*\)$$/* \1::/p' \ -e 's/@unnumbered \(.*\)$$/* \1::/p' \ - haskell-mode.texi > haskell-mode-menu-order.txt + $< > haskell-mode-menu-order.txt @sed -e '1,/@menu/ d' \ -e '/end menu/,$$ d' \ - haskell-mode.texi > haskell-mode-content-order.txt + $< > haskell-mode-content-order.txt diff -C 1 haskell-mode-menu-order.txt haskell-mode-content-order.txt @rm haskell-mode-menu-order.txt haskell-mode-content-order.txt # Processing proper LANG=en_US.UTF-8 $(MAKEINFO) $(MAKEINFO_FLAGS) -o $@ $< -haskell-mode.html: haskell-mode.texi haskell-mode.css - LANG=en_US.UTF-8 $(MAKEINFO) $(MAKEINFO_FLAGS) --html --css-include=haskell-mode.css --no-split -o $@ $< +doc/haskell-mode.html: doc/haskell-mode.texi doc/haskell-mode.css + LANG=en_US.UTF-8 $(MAKEINFO) $(MAKEINFO_FLAGS) --html --css-include=doc/haskell-mode.css --no-split -o $@ $< -html/index.html : haskell-mode.texi - if [ -e html ]; then rm -r html; fi +doc/html/index.html : doc/haskell-mode.texi + if [ -e doc/html ]; then rm -r doc/html; fi LANG=en_US.UTF-8 $(MAKEINFO) $(MAKEINFO_FLAGS) --html \ --css-ref=haskell-mode.css \ -c AFTER_BODY_OPEN="
" \ -c SHOW_TITLE=0 \ - -o html $< + -o doc/html $< -html/haskell-mode.css : haskell-mode.css html/index.html +doc/html/haskell-mode.css : doc/haskell-mode.css doc/html/index.html cp $< $@ -html/images/haskell-mode.svg : images/haskell-mode.svg html/index.html - mkdir -p html/images +doc/html/haskell-mode.svg : images/haskell-mode.svg doc/html/index.html cp $< $@ -html : html/index.html html/haskell-mode.css html/images/haskell-mode.svg +doc/html : doc/html/index.html doc/html/haskell-mode.css doc/html/haskell-mode.svg +deploy-manual : doc/html + cd doc && ./deploy-manual.sh $(AUTOLOADS): $(ELFILES) haskell-mode.elc $(BATCH) \ diff --git a/doc/deploy-manual.sh b/doc/deploy-manual.sh new file mode 100755 index 000000000..6d4507675 --- /dev/null +++ b/doc/deploy-manual.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +set -e +set -u + +if [[ "${TRAVIS_REPO_SLUG:-}" != "haskell/haskell-mode" ]]; then + echo "TRAVIS_REPO_SLUG is '${TRAVIS_REPO_SLUG:-}' expected 'haskell/haskell-mode'" + echo "Manual deployment available only directly for 'haskell/haskell-mode' repo" + exit 0 +fi + +if [[ "${TRAVIS_BRANCH:-}" != "master" ]]; then + echo "TRAVIS_BRANCH is '${TRAVIS_BRANCH:-}' expected 'master'" + echo "Manual deployment available only for 'master' branch" + exit 0 +fi + +if [[ -z "${GITHUB_DEPLOY_KEY_PASSPHRASE:-}" ]]; then + echo "GITHUB_DEPLOY_KEY_PASSPHRASE must be set to passphrase for github deploy key" + echo "Pull requests do not have access to secure variables" + 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 "" + +eval $(ssh-agent) +ssh-add haskell-mode-travis-deploy-key-plain + +# Git setup, this commit should appear as if Travis made it +export GIT_COMMITTER_EMAIL='travis@travis-ci.org' +export GIT_COMMITTER_NAME='Travis CI' +export GIT_AUTHOR_EMAIL='travis@travis-ci.org' +export GIT_AUTHOR_NAME='Travis CI' + +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 + +cd gh-pages-deploy +git rm -qr manual/latest +cp -r ../html manual/latest +git add manual/latest +(git commit -m "Update manual from haskell/haskell-mode@${HEAD_COMMIT}" && git push) || true +cd .. +rm -fr gh-pages-deploy + +eval $(ssh-agent -k) +echo Done! diff --git a/doc/haskell-mode-travis-deploy-key b/doc/haskell-mode-travis-deploy-key new file mode 100644 index 000000000..0194345e9 --- /dev/null +++ b/doc/haskell-mode-travis-deploy-key @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-128-CBC,9385B3F19E12C488ACF654D37A7B70B2 + +3ucmv5i37lwRejeFWTliQ9pfs8Vfq1G/30lnI7/GroClDiE2LAKm9tWzD8EAVdjx +lAcD9gKy9g+5Gft/qj+ucXmh2OWhTz2veBIJzjuujoZBNbbgBhBGrkAzr0h2LK5u +OE06F5Goz6rAjnyFbxTU9slZnWENHKpnwYBRriIq3KM1vS9Kr/0S3cYYfY5exITT +Gy5uTLHDVzps5Bn7wjLgXRUoLbDRRDF6L4LPkaFyEHRt+1VjtqWc3jnMuY7P2Rru +y8Mlr0cv9UzeJleTrN8AvcEtUCcl7FpieSZsGh0Q2/wEj3fEFk6Zf/q3aAqz0mn4 +hdp3CvTRUeYv1JibdXSptd34dpxB+9IJIbZnZ4ixaj5Ay3oCj9PPHC+qDGsjeA6J +ect9EzxuVr6j4gvJYR0nOKNH1KOBOAZDhCQG0kvZxXaQyUbu5NV+kh6XUCedzfJZ +XyutuOF6frUjEkJlRj5aWdgtXUDKrPDO9jnV9jknoyaOQMjWt4vd8uhkWZo+SfZ8 +bVO8pcx/YxNBKiHeDiLVUPc7h0Y1fI48RwLky+iLrYTe6hhMOPb8/PxZsbG+xVN5 ++D2v08EhDzomxsPKBagHCb9Dffihi21F54ZeRBAx4Fr7O3KEHFE/67Oec5lz/seh +yDw+ZhW9bLklO8nZWw4rJGKG7pCgb4pRVD4Rk3VFgVdolq9Z44YNCyHX+CsfuE7D +KvHBOQWdpVD8EvP2sjqb7kIFOY9ZP5vOOZ10fm9XweCca4xJzwlr9aah0XXYza8S +hCgkPYDQndLM4NH0UfGJPft7HhjUSF7vodL/0jKsTvRBeXnh5pgeTM576LnpfYd3 +wzLKg4g2/bIMUGYKo4VRY6rXvQbf4MDvUlnGRMBnihbm+x0LU6U0/nxBzeKnv5D9 +VR56xGwJHxIytNjqzAZVPk8+9nXw8Dyc0XmSkPsaYr5DgI/nacRbdvlVo2M8Rac8 +72qcAqkUAB/JXl4Jbucw4nGBsdOnl6zGRqTMeG/bfR9ULM4u1wGzNeXghc5+Krk3 +mMiZeCxfnAdw2eEM0aXieMD2QB882Cm5HVB+7tqQZcbpr8pt9uNQrr44rkBnNsqa +LQdmbUN+1+uDXlFstkKBCN/i2cEX5NTo7yiebMZZ9/+uY1LWTPzV3wAwtJeYaMIB +oJ5DunlxqpKULX8jL0k2qAuA57ah2DlsMj/2L9uNs84ZmkPnhtPpiDwsFCL+xxRo +Sup6qrrBOP6WvGR8O4uWcKP/HH6x11cgD20NWcoSjslXBgJK5nV9uqiKE/vNjG9e +/pDfvce4kdUQcp4hbJu+o8MrWLC9o3ijPZWfqikCt5dX8qMp364GZcyxYOy0gv9X +g259f1GImJHcFMb88qqYdP9au+S96ZIXOGtlKH/nwfe/UFe9tO2jOQqNgVh+Akyu +3gcjuMyDQryXNNHMRlB76mFAUnSUQIQ3n84oMFn8ZscogDdA89FWOV0MUkSoiVmW +7uD2hlliYg269xDJH3FE4Txk95fKquJpsa+6hzpt2V7VqR6m0BzQ+yQmMFuWsLtI +oTOUtdPYojZVWPgeskNCrxEg2/CJQ4lHGQhv8tab5HWleHCS75RjwlFpYE9Ie4K3 +-----END RSA PRIVATE KEY----- diff --git a/haskell-mode.css b/doc/haskell-mode.css similarity index 96% rename from haskell-mode.css rename to doc/haskell-mode.css index 0d575dd55..f19158e3a 100644 --- a/haskell-mode.css +++ b/doc/haskell-mode.css @@ -27,7 +27,7 @@ div.background { width: 256px; height: 256px; opacity: 0.3; - background-image: url("images/haskell-mode.svg"); + background-image: url("haskell-mode.svg"); background-repeat: no-repeat; background-size: 256px 256px; } diff --git a/haskell-mode.texi b/doc/haskell-mode.texi similarity index 100% rename from haskell-mode.texi rename to doc/haskell-mode.texi