diff --git a/.appveyor.yml b/.appveyor.yml index 6d4f5b5e..6586dd60 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,6 +1,6 @@ branches: - except: - - gh-pages + only: + - master install: - set PATH=C:\Python36;%PATH% diff --git a/.ci/build_cmake.sh b/.ci/build_cmake.sh deleted file mode 100644 index 5b2d69bb..00000000 --- a/.ci/build_cmake.sh +++ /dev/null @@ -1,17 +0,0 @@ -CMAKE_VERSION=3.9.6 -CMAKE_MVERSION=${CMAKE_VERSION%.*} -# Non Bash version: -# echo CMAKE_MVERSION=`$var | awk -F"." '{ print $1"."$2 }'` - -if [ "$TRAVIS_OS_NAME" = "linux" ] ; then CMAKE_URL="https://cmake.org/files/v${CMAKE_MVERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.tar.gz" ; fi -if [ "$TRAVIS_OS_NAME" = "osx" ] ; then CMAKE_URL="https://cmake.org/files/v$CMAKE_MVERSION/cmake-$CMAKE_VERSION-Darwin-x86_64.tar.gz" ; fi -cd "${DEPS_DIR}" - -if [[ ! -f "${DEPS_DIR}/cmake/bin/cmake" ]] ; then - echo "Downloading CMake $CMAKE_VERSION" - mkdir -p cmake - travis_retry wget --no-check-certificate --quiet -O - "${CMAKE_URL}" | tar --strip-components=1 -xz -C cmake -fi - -export PATH="${DEPS_DIR}/cmake/bin:${PATH}" -cd "${TRAVIS_BUILD_DIR}" diff --git a/.ci/build_doxygen.sh b/.ci/build_doxygen.sh index 5087f2be..6772ecf9 100644 --- a/.ci/build_doxygen.sh +++ b/.ci/build_doxygen.sh @@ -1,3 +1,5 @@ +set -evx + DOXYGEN_URL="ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.13.src.tar.gz" cd "${DEPS_DIR}" @@ -15,3 +17,6 @@ fi export PATH="${DEPS_DIR}/doxygen/build/bin:${PATH}" cd "${TRAVIS_BUILD_DIR}" + +set +evx + diff --git a/.ci/build_lcov.sh b/.ci/build_lcov.sh index 3b89dd33..8671d788 100644 --- a/.ci/build_lcov.sh +++ b/.ci/build_lcov.sh @@ -1,3 +1,5 @@ +set -evx + LCOV_URL="http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.13.orig.tar.gz" cd "${DEPS_DIR}" @@ -9,3 +11,5 @@ fi export PATH="${DEPS_DIR}/lcov/bin:${PATH}" cd "${TRAVIS_BUILD_DIR}" + +set +evx diff --git a/.ci/check_tidy.sh b/.ci/check_tidy.sh index 55189d9e..bf7bef8d 100755 --- a/.ci/check_tidy.sh +++ b/.ci/check_tidy.sh @@ -1,11 +1,21 @@ -#!/usr/bin/env sh +#!/usr/bin/env bash + +echo -en "travis_fold:start:script.build\\r" +echo "Building with tidy on..." set -evx -mkdir build-tidy || true +mkdir -p build-tidy cd build-tidy CXX_FLAGS="-Werror -Wall -Wextra -pedantic -std=c++11" cmake .. -DCLANG_TIDY_FIX=ON cmake --build . +set -evx +echo -en "travis_fold:end:script.build\\r" +echo -en "travis_fold:start:script.compare\\r" +echo "Checking git diff..." +set -evx + git diff --exit-code --color set +evx +echo -en "travis_fold:end:script.compare\\r" diff --git a/.ci/make_and_test.sh b/.ci/make_and_test.sh new file mode 100755 index 00000000..18b88895 --- /dev/null +++ b/.ci/make_and_test.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +echo -en "travis_fold:start:script.build\\r" +echo "Building..." +set -evx + +mkdir -p build +cd build +cmake .. -DCLI_CXX_STD=$1 -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_LAUNCHER=ccache +cmake --build . -- -j2 + +set +evx +echo -en "travis_fold:end:script.build\\r" +echo -en "travis_fold:start:script.test\\r" +echo "Testing..." +set -evx + +ctest --output-on-failure + +set +evx +echo -en "travis_fold:end:script.test\\r" diff --git a/.ci/prepare_altern.sh b/.ci/prepare_altern.sh deleted file mode 100644 index e384b003..00000000 --- a/.ci/prepare_altern.sh +++ /dev/null @@ -1,18 +0,0 @@ -cd "${DEPS_DIR}" -mkdir -p extrabin -cd extrabin - -if [ "$CXX" = "g++" ] ; then - ln -s `which gcc-$COMPILER` gcc - ln -s `which g++-$COMPILER` g++ - ln -s `which gcov-$COMPILER` gcov -else - ln -s `which clang-$COMPILER` clang - ln -s `which clang++-$COMPILER` clang++ - ln -s `which clang-format-$COMPILER` clang-format - ln -s `which clang-tidy-$COMPILER` clang-tidy -fi - -export PATH="${DEPS_DIR}/extrabin":$PATH - -cd "${TRAVIS_BUILD_DIR}" diff --git a/.ci/run_codecov.sh b/.ci/run_codecov.sh index cd7219a8..2bf47e53 100755 --- a/.ci/run_codecov.sh +++ b/.ci/run_codecov.sh @@ -1,3 +1,7 @@ +#!/usr/bin/env bash + +echo -en "travis_fold:start:script.build\\r" +echo "Building..." set -evx cd ${TRAVIS_BUILD_DIR} @@ -7,8 +11,17 @@ cmake .. -DCLI_SINGLE_FILE_TESTS=OFF -DCLI_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Cover cmake --build . -- -j2 cmake --build . --target CLI_coverage +set +evx +echo -en "travis_fold:end:script.build\\r" +echo -en "travis_fold:start:script.lcov\\r" +echo "Capturing and uploading LCov..." +set -evx + lcov --directory . --capture --output-file coverage.info # capture coverage info lcov --remove coverage.info '*/tests/*' '*/examples/*' '*gtest*' '*gmock*' '/usr/*' --output-file coverage.info # filter out system lcov --list coverage.info #debug info # Uploading report to CodeCov bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports" + +set +evx +echo -en "travis_fold:end:script.lcov\\r" diff --git a/.ci/travis.sh b/.ci/travis.sh deleted file mode 100755 index 49cc2f8e..00000000 --- a/.ci/travis.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env sh -set -evx - -mkdir build || true -cd build -cmake .. -DCLI_CXX_STD=11 -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -cmake --build . -- -j2 -ctest --output-on-failure -if [ -n "$CLI_CXX_STD" ] && [ "$CLI_CXX_STD" -ge "14" ] ; then - cmake .. -DCLI_CXX_STD=14 -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug - cmake --build . -- -j2 - ctest --output-on-failure -fi -if [ -n "$CLI_CXX_STD" ] && [ "$CLI_CXX_STD" -ge "17" ] ; then - cmake .. -DCLI_CXX_STD=17 -DCLI_SINGLE_FILE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug - cmake --build . -- -j2 - ctest --output-on-failure -fi - -set +evx diff --git a/.travis.yml b/.travis.yml index c02c44b0..14e23322 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,55 +1,54 @@ language: cpp sudo: false dist: trusty + +# Exclude ghpages, +# but even better, don't build branch and PR, just PR branches: - exclude: - - gh-pages + only: + - master + cache: + ccache: true + apt: true directories: - - "${TRAVIS_BUILD_DIR}/deps/cmake" - "${TRAVIS_BUILD_DIR}/deps/doxygen" + matrix: include: + # Default clang - compiler: clang - addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-trusty-5.0 - packages: - - clang++-5.0 - env: - - COMPILER=5.0 - - CLI_CXX_STD=14 - - compiler: clang - addons: - apt: - packages: - - clang-3.9 - - clang-format-3.9 - - clang-tidy-3.9 - env: - - COMPILER=3.9 - - CLI_CXX_STD=14 + + # Check style/tidy + - compiler: clang script: - cd "${TRAVIS_BUILD_DIR}" - scripts/check_style.sh - - ".ci/check_tidy.sh" + - .ci/check_tidy.sh + + # Docs and clang 3.5 - compiler: clang + env: + - DEPLOYMAT=yes addons: apt: packages: - clang-3.5 - env: - - COMPILER=3.5 - - DEPLOY_MAT=yes - - DOXYFILE=$TRAVIS_BUILD_DIR/docs/Doxyfile + install: + - export CC=clang-3.5 + - export CXX=clang++-3.5 + script: + - .ci/make_and_test.sh 11 after_success: + - export DOXYFILE=$TRAVIS_BUILD_DIR/docs/Doxyfile - | if [ "${TRAVIS_BRANCH}" == "master" ] && [ "${TRAVIS_PULL_REQUEST}" == "false" ] then - echo "Updating docs" && cd $TRAVIS_BUILD_DIR && .ci/build_docs.sh + . .ci/build_doxygen.sh + .ci/build_docs.sh fi + + # GCC 6 and Coverage - compiler: gcc addons: apt: @@ -59,24 +58,27 @@ matrix: - g++-6 - curl - lcov - env: - - COMPILER=6 - - CLI_CXX_STD=14 - before_install: + install: + - export CC=gcc-6 + - export CXX=g++-6 - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" - cd $TRAVIS_BUILD_DIR - ". .ci/build_lcov.sh" - ".ci/run_codecov.sh" + + # GCC 4.7 and Conan - compiler: gcc addons: apt: packages: - g++-4.7 - env: - - COMPILER=4.7 - before_install: + install: + - export CC=gcc-4.7 + - export CXX=g++-4.7 - python -m pip install --user conan - conan user + script: + - .ci/make_and_test.sh 11 after_success: - conan create . CLIUtils/stable - | @@ -86,33 +88,28 @@ matrix: conan user -p ${BINFROG_API_KEY} -r origin henryiii conan upload "*" -c -r origin --all fi + + # macOS and clang - os: osx compiler: clang - before_install: + install: - brew update - echo 'brew "python"' > Brewfile - echo 'brew "conan"' >> Brewfile + - echo 'brew "ccache"' >> Brewfile - brew bundle - python -m ensurepip --user - conan user after_success: - conan create . CLIUtils/CLI11 -install: -- python -c 'import sys; print(sys.version_info[:])' -- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" -- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd $TRAVIS_BUILD_DIR && . .ci/prepare_altern.sh - ; fi -- if [ "$TRAVIS_OS_NAME" = "linux" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_cmake.sh - ; fi -- if [ "$TRAVIS_OS_NAME" = "linux" ] ; then cd $TRAVIS_BUILD_DIR && . .ci/build_doxygen.sh - ; fi -- cd "${DEPS_DIR}" -- if [ "$(python -c 'import sys; print(sys.version_info[0])')" = "2" ] ; then python - -m pip install --user pathlib ; fi -- cmake --version + +install: skip + script: -- cd "${TRAVIS_BUILD_DIR}" -- ".ci/travis.sh" +- .ci/make_and_test.sh 11 +- .ci/make_and_test.sh 14 + + deploy: provider: releases api_key: diff --git a/scripts/MakeSingleHeader.py b/scripts/MakeSingleHeader.py index e6985beb..39d227f4 100755 --- a/scripts/MakeSingleHeader.py +++ b/scripts/MakeSingleHeader.py @@ -1,7 +1,5 @@ #!/usr/bin/env python -# Requires pathlib on python 2 - from __future__ import print_function, unicode_literals import os