From 796baa19cb2b9e492a4fbeb7cb85330a66129d6f Mon Sep 17 00:00:00 2001 From: Sebastian Ullrich Date: Mon, 26 Feb 2018 09:43:30 +0100 Subject: [PATCH] chore(.appveyor,.travis): proper nightly builds --- .appveyor.yml | 7 ++++-- .travis.yml | 4 ++-- script/deploy_gh_pages.sh | 20 ----------------- script/deploy_nightly.sh | 45 +++++++++++++++++++++++++++++++++++++++ script/diff_changelogs.py | 28 ++++++++++++++++++++++++ 5 files changed, 80 insertions(+), 24 deletions(-) delete mode 100644 script/deploy_gh_pages.sh create mode 100644 script/deploy_nightly.sh create mode 100755 script/diff_changelogs.py diff --git a/.appveyor.yml b/.appveyor.yml index cfb0325a80..f080f241a9 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -4,6 +4,7 @@ environment: MSYSTEM: MINGW64 # use MSYS2 shell matrix: - CFG: MINGW64 + UPLOAD: ON - CFG: MSVC cache: c:\tools\vcpkg\installed\ @@ -25,7 +26,7 @@ build_script: cmake --build .) - if %CFG% == MINGW64 (C:\msys64\usr\bin\bash -lc "exec 0 diff.md + ./script/diff_changelogs.py <(git show $last_tag:doc/changes.md) doc/changes.md >> diff.md + gothub release -s $GH_TOKEN -u leanprover -r lean-nightly -t $LEAN_VERSION_STRING -d - --pre-release < diff.md +fi + +if [ $rev = $(git rev-parse --short $LEAN_VERSION_STRING) ] +then + gothub upload -s $GH_TOKEN -u leanprover -r lean-nightly -t $LEAN_VERSION_STRING -n "$(basename $1)" -f "$1" +fi + +# LEGACY binary in gh-pages branch. Remove when test scripts are changed to use versioned nightlies. +# inspired by https://github.com/steveklabnik/automatically_update_github_pages_with_travis_example + +git checkout -b gh-pages nightly/gh-pages +cd gh-pages + +mkdir -p build +ln -f ../build/lean-* build/ + +git add -A . +git commit --amend --reset-author -m "nightly build at ${rev}" +git push -fq diff --git a/script/diff_changelogs.py b/script/diff_changelogs.py new file mode 100755 index 0000000000..16228bab84 --- /dev/null +++ b/script/diff_changelogs.py @@ -0,0 +1,28 @@ +#! /bin/env python3 + +import collections +import re +import sys + +def parse(f): + s = open(f, 'r').read() + flgs = re.VERBOSE | re.MULTILINE + [_, release, _] = re.split(r"""^\w.* \n # master branch (aka work in progress) + -+ \n+ # -------------""", s, maxsplit=2, flags=flgs) + cats = re.split(r"^(?P\*.+\*)$ # *Features*", release, flags=flgs) + cats = zip(cats[1::2], cats[2::2]) + return collections.OrderedDict([(cat[0], re.findall(r"^\*\ (?:.*(?:\n\ \ .*)*) # * Implement ...", cat[1], flags=flgs)) for cat in cats]) + +def diff(oldf, newf): + old = parse(oldf) + new = parse(newf) + for cat in new: + items = [i for i in new[cat] if i not in old.get(cat,[])] + if items: + print(cat) + print() + print('\n\n'.join(items)) + print() + +if __name__ == '__main__': + diff(sys.argv[1], sys.argv[2])