diff --git a/.github/workflows/clang-format.yml b/.github/workflows/clang-format.yml new file mode 100644 index 00000000..fcf82b94 --- /dev/null +++ b/.github/workflows/clang-format.yml @@ -0,0 +1,32 @@ +name: Clang Format Check + +on: [push, pull_request] + +jobs: + ubuntu64: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: 'recursive' + + - name: Install clang format + run: | + # gets us newer clang + sudo bash -c "cat >> /etc/apt/sources.list" << LLVMAPT + # 3.8 + deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main + deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main + LLVMAPT + + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - + + sudo apt-get -qq update + + sudo apt-get install -y clang-format-8 + + - name: Check the Formatting + run: | + ./CI/formatcode.sh + ./CI/check-format.sh diff --git a/CI/check-format.sh b/CI/check-format.sh new file mode 100755 index 00000000..7642c190 --- /dev/null +++ b/CI/check-format.sh @@ -0,0 +1,11 @@ +#!/bin/bash +dirty=$(git ls-files --modified) + +set +x +if [[ $dirty ]]; then + echo "=================================" + echo "Files were not formatted properly" + echo "$dirty" + echo "=================================" + exit 1 +fi \ No newline at end of file diff --git a/CI/formatcode.sh b/CI/formatcode.sh new file mode 100755 index 00000000..6999752f --- /dev/null +++ b/CI/formatcode.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# Original source https://github.com/Project-OSRM/osrm-backend/blob/master/scripts/format.sh + +set +x +set -o errexit +set -o pipefail +set -o nounset + +# Runs the Clang Formatter in parallel on the code base. +# Return codes: +# - 1 there are files to be formatted +# - 0 everything looks fine + +# Get CPU count +OS=$(uname) +NPROC=1 +if [[ $OS = "Linux" || $OS = "Darwin" ]] ; then + NPROC=$(getconf _NPROCESSORS_ONLN) +fi + +# Discover clang-format +if type clang-format-8 2> /dev/null ; then + CLANG_FORMAT=clang-format-8 +else + CLANG_FORMAT=clang-format +fi + +find .. -type d \( -path ./deps \ +-o -path ./cmake \ +-o -path ./build \) -prune -type f -o -name '*.h' -or -name '*.hpp' -or -name '*.m' -or -name '*.mm' -or -name '*.c' -or -name '*.cpp' \ +| xargs -L100 -P${NPROC} ${CLANG_FORMAT} -i -style=file -fallback-style=none diff --git a/src/curl-helper.cpp b/src/curl-helper.cpp index c5f82ae3..30f16977 100644 --- a/src/curl-helper.cpp +++ b/src/curl-helper.cpp @@ -43,7 +43,8 @@ bool loadCurl() #endif for (QString path : locations) { - blog(LOG_INFO, "[adv-ss] trying '%s'", path.toUtf8().constData()); + blog(LOG_INFO, "[adv-ss] trying '%s'", + path.toUtf8().constData()); QFileInfo libPath( QDir(path).absoluteFilePath(curl_library_name)); diff --git a/src/osx/advanced-scene-switcher-osx.mm b/src/osx/advanced-scene-switcher-osx.mm index ff990c40..e8cc11bb 100644 --- a/src/osx/advanced-scene-switcher-osx.mm +++ b/src/osx/advanced-scene-switcher-osx.mm @@ -17,15 +17,16 @@ void GetWindowList(std::vector &windows) for (NSDictionary *app in apps) { // Construct string from NSString accounting for nil std::string name([[app objectForKey:@"kCGWindowName"] - UTF8String], - [[app objectForKey:@"kCGWindowName"] - lengthOfBytesUsingEncoding: - NSUTF8StringEncoding]); - std::string owner([[app objectForKey:@"kCGWindowOwnerName"] - UTF8String], - [[app objectForKey:@"kCGWindowOwnerName"] - lengthOfBytesUsingEncoding: - NSUTF8StringEncoding]); + UTF8String], + [[app objectForKey:@"kCGWindowName"] + lengthOfBytesUsingEncoding: + NSUTF8StringEncoding]); + std::string owner( + [[app objectForKey:@"kCGWindowOwnerName"] + UTF8String], + [[app objectForKey:@"kCGWindowOwnerName"] + lengthOfBytesUsingEncoding: + NSUTF8StringEncoding]); // Check if name exists if (!name.empty() && @@ -53,15 +54,16 @@ void GetWindowList(QStringList &windows) for (NSDictionary *app in apps) { // Construct string from NSString accounting for nil std::string name([[app objectForKey:@"kCGWindowName"] - UTF8String], - [[app objectForKey:@"kCGWindowName"] - lengthOfBytesUsingEncoding: - NSUTF8StringEncoding]); - std::string owner([[app objectForKey:@"kCGWindowOwnerName"] - UTF8String], - [[app objectForKey:@"kCGWindowOwnerName"] - lengthOfBytesUsingEncoding: - NSUTF8StringEncoding]); + UTF8String], + [[app objectForKey:@"kCGWindowName"] + lengthOfBytesUsingEncoding: + NSUTF8StringEncoding]); + std::string owner( + [[app objectForKey:@"kCGWindowOwnerName"] + UTF8String], + [[app objectForKey:@"kCGWindowOwnerName"] + lengthOfBytesUsingEncoding: + NSUTF8StringEncoding]); // Check if name exists if (!name.empty() && @@ -144,15 +146,16 @@ bool isFullscreen(std::string &title) for (NSDictionary *app in apps) { // Construct string from NSString accounting for nil std::string name([[app objectForKey:@"kCGWindowName"] - UTF8String], - [[app objectForKey:@"kCGWindowName"] - lengthOfBytesUsingEncoding: - NSUTF8StringEncoding]); - std::string owner([[app objectForKey:@"kCGWindowOwnerName"] - UTF8String], - [[app objectForKey:@"kCGWindowOwnerName"] - lengthOfBytesUsingEncoding: - NSUTF8StringEncoding]); + UTF8String], + [[app objectForKey:@"kCGWindowName"] + lengthOfBytesUsingEncoding: + NSUTF8StringEncoding]); + std::string owner( + [[app objectForKey:@"kCGWindowOwnerName"] + UTF8String], + [[app objectForKey:@"kCGWindowOwnerName"] + lengthOfBytesUsingEncoding: + NSUTF8StringEncoding]); // True if switch equals app bool equals = (title == name || title == owner);