From 01c61a714bb532efe4eff4375c5b7931570907fe Mon Sep 17 00:00:00 2001 From: mcarton Date: Tue, 19 Jul 2016 21:25:46 +0200 Subject: [PATCH] Setup automatic push of gh-pages --- .github/deploy.sh | 66 +++++++++++++++++++++++++++++++++++++++++ .github/deploy_key.enc | Bin 0 -> 1680 bytes .gitignore | 4 +++ util/export.py | 27 +++++++++++++---- 4 files changed, 92 insertions(+), 5 deletions(-) create mode 100755 .github/deploy.sh create mode 100644 .github/deploy_key.enc diff --git a/.github/deploy.sh b/.github/deploy.sh new file mode 100755 index 000000000..7b40371e0 --- /dev/null +++ b/.github/deploy.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# Automatically deploy on gh-pages + +set -e + +SOURCE_BRANCH="master" +TARGET_BRANCH="gh-pages" + +# Save some useful information +REPO=$(git config remote.origin.url) +SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:} +SHA=$(git rev-parse --verify HEAD) + +# Clone the existing gh-pages for this repo into out/ +( + git clone "$REPO" out + cd out + git checkout $TARGET_BRANCH +) + +# Remove the current doc for master +rm -rf out/master/ || exit 0 + +# Make the doc for master +mkdir out/master/ +cp util/gh-pages/index.html out/master +./util/export.py out/master/lints.json + +# Save the doc for the current tag and point current/ to it +if [ -n "$TRAVIS_TAG" ]; then + cp -r out/master "out/$TRAVIS_TAG" + rm -f out/current + ln -s "$TRAVIS_TAG" out/current +fi + +# Pull requests and commits to other branches shouldn't try to deploy, just build to verify +if [ "$TRAVIS_PULL_REQUEST" != "false" ] || [ "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then + echo "Generated, won't push" + exit 0 +fi + +# Now let's go have some fun with the cloned repo +cd out +git config user.name "Travis CI" +git config user.email "travis@ci.invalid" + +if [ -z "$(git diff --exit-code)" ]; then + echo "No changes to the output on this push; exiting." + exit 0 +fi + +git add . +git commit -m "Automatic deploy to GitHub Pages: ${SHA}" + +# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc +ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key" +ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv" +ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR} +ENCRYPTED_IV=${!ENCRYPTED_IV_VAR} +openssl aes-256-cbc -K "$ENCRYPTED_KEY" -iv "$ENCRYPTED_IV" -in deploy_key.enc -out deploy_key -d +chmod 600 deploy_key +eval $(ssh-agent -s) +ssh-add deploy_key + +# Now that we're all set up, we can push. +git push "$SSH_REPO" "$TARGET_BRANCH" diff --git a/.github/deploy_key.enc b/.github/deploy_key.enc new file mode 100644 index 0000000000000000000000000000000000000000..48cb3f5a1276dfdacef1d54cecd1ded0911738a8 GIT binary patch literal 1680 zcmV;B25vF7u9N_L=w*TIYn1;MzUesW5ej2=oot?d>%{ zy=pH1(l$5zhk3TM$4_n%!q&1t*9w&T&t=Or-GHPK7bN}_feZhHHdR&H%g~fu8 z*f}0Udo-cU!f_}8=ay!LF^mdI-0d?3(@?B;SSW!+ZL5c1PDks2hcD%mUhf*AEOX!_ zOU@QB+)7ilyfBZ@cukZ)uLi1?TTviJa`BQYlNl6Da9f2!Pf__3o}Qy4{g+q6JG{|X z+A#u1gC(!>8kL`2OyiC4;APXVtcaHcyi!y#2EUg}LC-1QuNf2M$VV_Qpc>Ayfw7C# zISG~sUT6PTwLQn+MX8?=|y&G%V&|B`{XdC$vN{4|BAg7kQMQGf;rb+Pm`@V z^b+_}7%S_}=u!yQ{Nf|AGIWo=L@GlBv_z@Z+0SxYr>ha8hBE1?2hZ zUKy{$<<@oNXK5pO9&73B(mCVj6wakA2nQn?yqa9+MU;Dxzg%SciEkCP9zKm=*>ds% zn*2Sa4Xd4N-sF8rai#Y0TX*W|J0jZiv1SiSR~c?_-YTNA{J&;RU23E_>b?*pTJy*7 z>PCKgIytqqVbithll=TrYGbq4%|TM)1w&y@zRzrz%31DkcGw8X$|ww4cS-pp0oNbN z?;|O#9hZ*?6N~+667GvUz4+`r(Wthq`*j5|J$Trypc_ZabAI<>%S!^^sXHDK{DJI1 zlTb(%P1I=Ol}!hRe7KTcreEM$M>2e#CTt4_hu(5k?iEDE`md3E@^BjY&f5(%Cxu(0 z(=jt`&cM9Tx2^zK-vOHed{#^*O>CBZ|0G#Qw6kF>xYN-)CJ7>+HUoS~ zS}JCM8U8<9+~9-jPUAT<`@anfUP*q7T@Kak`g)q#G?;0fRCz6R3uU!^+a&NzZU@ig z!jg?*@Q~Q|^9fB6L{znl`E+2BVZp90UUcdb(J&U~TjmLd)d{0jn!;B*el6~m3Oj?7 zsyeBGF=A;5d9NJMt1n{&+LBBHH)B-7(+PBjowmB09RR<;{~;1bC%e*r$DS|-z2;En z@aL4dJw8CVYaj-V*!^Xddy?8T#+va<*+eJFGKJ5)80i*w+0^727+sFl#;k zp75P8*|UXDP9s@lStLfJ>?pk{=C%zFCgBqq(BB8f&pyzGDLapcLTE$W>)Xm1c+=Ga zXWh0Z##ii8_0#-OOrb&6%CB-Z+`$$*AXOyUcSuzN&vPYOEbeWtwY6X_bUtNd5s&e! zR8I+m7eWFHJ>bgUka?fw1AD-xAbKYNVBOXwR^@-sTNf*2f-yl>LkwLrC+< ztT-MogUA9+gjY&w6#fDTb?NjUx9O2_g3;QOC_9z-C5)`}qGa*PConYj9K_^4)XjbW z{(BKxnQj9py|JC4q>z!`t>f_GPTFf^LK$c5x4^>`gLX+j(&LbA927@TPjlF-HRKWQY0!(*fj-a`OQ@%|218fm aw@mexo81x=`|RI})%;EfbOs3kDMvfxY($g* literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index e5a2f2aa7..0206d9dc9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# Used by Travis to be able to push: +/.github/deploy_key +out + # Compiled files *.o *.so diff --git a/util/export.py b/util/export.py index 9ef06e6a2..558209eee 100755 --- a/util/export.py +++ b/util/export.py @@ -1,8 +1,11 @@ #!/usr/bin/env python +# Build the gh-pages +import json import os import re -import json +import sys + level_re = re.compile(r'''(Forbid|Deny|Warn|Allow)''') conf_re = re.compile(r'''define_Conf! {\n([^}]*)\n}''', re.MULTILINE) @@ -15,10 +18,19 @@ This lint has the following configuration variables: * `%s: %s`: %s (defaults to `%s`). """ + # TODO: actual logging -def warn(*args): print(args) -def debug(*args): print(args) -def info(*args): print(args) +def warn(*args): + print(*args) + + +def debug(*args): + print(*args) + + +def info(*args): + print(*args) + def parse_path(p="clippy_lints/src"): lints = [] @@ -52,6 +64,7 @@ def parse_conf(p): return c + def parseLintDef(level, comment, name): lint = {} lint['id'] = name @@ -80,6 +93,7 @@ def parseLintDef(level, comment, name): return lint + def parse_file(d, f): last_comment = [] comment = True @@ -134,10 +148,13 @@ def parse_file(d, f): warn("Warning: Missing Lint-Name in", f) comment = True + def main(): lints = parse_path() info("got %s lints" % len(lints)) - with open("util/gh-pages/lints.json", "w") as file: + + outdir = sys.argv[1] if len(sys.argv) > 1 else "util/gh-pages/lints.json" + with open(outdir, "w") as file: json.dump(lints, file, indent=2) info("wrote JSON for great justice")