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 000000000000..7b40371e01b1 --- /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 zcmZqqw@6cA>w?9$ji>uR7BHx^FY-BZVbh{Mfu(I*zH};nn&WZFpJ|5j^1RsIMgLdd zcU|7Vx#aA96PUJnRnIups{C+TH}~Fr;jdp^ZyFm1CY^|7U!kpgMN~v5ule6s z*7wCiB|om`@8}HZ^IWKuWH!tTy@?cB65+SX?z2`* z?aDjmrgJ&d?>}~5Fu(27^v-P=_jGyoN!*@z^TDGJdY}8!zRmn081=lR|G_QWn=1`U zJ2<}ZUVr=6)M0Oy-v7tvIAm{lu6^QuJJDOtanJEd-P(t3OR@sK^{nFD7oGl!+ud_+ z&E?(8cW?UK(Yr0#>u<#C&#sftiUkOFF80X{`(L*IkA8c-8T`?=7B4ZKeO^wzreW=kl?RQo z5;=?if8Aeuuri`5rme5_XjA_UOF8FilZ9sv6>2a(pO)5Y*u&*@=dCg8<$yKi5gLsy zxvSd~{M=tRwCg{e9QR&op-%Aw74LIm26w!Ix9lj#eO~8s%g=I3T{OoCuvWX z6!9sDZguhx{3$$d-eTpy)58y2@3|O$%aF;VS#|v zbo#{Ezn>T^J!$!w_kY)3kqM$7E1E2?$NEoRYxza!N3ewU>vJ!HIIjJ9q`c9nq<^1_ zmNUy1mlaj@UsRK;ZaQ**csx67$8|-Of}q4HtWSQvjFVh{`02IMC+V5Wm2%lH-(0eM z{9NSRQXLLvk`_AV~KNb0|pzH?6$x|9UQRSXLl^L(gpM0;ZxmI?1KZkJl z-%O!*-8OrFys^2sV%yr^rL2aw6*tx{kaj;^T=zZkv^UfJmDX~Ce;VI7Ob+l6^}Uku zXsR!JTg{G1am(T#M7kT*%u~zZW^cb&6#7oo<>;^V6Kg&dNc}u_o7Y6WHG0uyL*v|Y z2liapzK$W{KI3f0nlK+V-<)Z+|5YN(>MM=Uuitj5d&}lTogJ4iTB~s?%{ODN@r=?+ zYmoeBA9LqH^J~Aymd3yL^K!>|)^*47U48SbYSvAY8JTlKDs@Y_Q@7UMR{7wQ$A13F zp-H_-A12)R{+ZKP&?RJR_s^1qiHQf->BW`261r$0_AL4tXWLcI#i6qfgnF3^n&iV|o*Z)MGG|HK+-l%2MA4m+|H*m`gLO`Tf9+A9=Nn0-|8*ZccL+j4EJ*BJW>@ob2_aqX|S z=xysQ2HCd%=Y5!KaC393zn^ksN~DV0k~bQAHJ@$cQnvyW7-{g}({`tq`hmv)m(;>3p$jl+L@{ zbz8S4=#|)|rU>?bTpi-i*(~nF#BKZF)cpyS^Pe(TAK22c#lE9En`c7iya}Hk*}AWF zkXy;Lr*e^+oGPOu$K8(`qV!KKhzj2A`HMZ1U*MW?j1PxksgJqO($_7|1+$h+EzUT< zVduSPykXal%hgZ$+avAl@%iK$3pxGf6HLA>;a-^{|Cl&RUw)C_{&Her)5TkpHLR!p zQ0-asWl_qS46Sh3j37^Ika}+_`Ro z^CF>~)5d=5tdnPcH+naBo3wE_=hX8P7jqqwZIF|w(s4*zuztbhCm(yCOZ*HGjyS$D zLs;$g+`N~s9-q4qb;jHwC?waa_`MrWD<0j?eg8dthHU%cbK^lId@@A2=-1T;^$i z>G6bI84>pY|Kb~~O`iz9%e>HirP1z!sP~HH+t{4LpKSN}I&Jn{A(7v2?sr}Nt@RZVdqBY($g* literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index e5a2f2aa7b70..0206d9dc9636 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 9ef06e6a2bac..558209eee4d3 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")