diff --git a/Meta/lint-ci.sh b/Meta/lint-ci.sh index 45cd41beaa6..cc1638ca3c7 100755 --- a/Meta/lint-ci.sh +++ b/Meta/lint-ci.sh @@ -43,11 +43,18 @@ else echo -e "[${GREEN}SKIP${NC}]: IPCMagicLinter (in Meta/lint-ci.sh)" fi -if Meta/lint-clang-format.sh --overwrite-inplace "$@" && git diff --exit-code; then +if Meta/lint-clang-format.sh --overwrite-inplace "$@" && git diff --exit-code -- ':*.cpp' ':*.h' ':*.mm'; then echo -e "[${GREEN}OK${NC}]: Meta/lint-clang-format.sh" else echo -e "[${RED}FAIL${NC}]: Meta/lint-clang-format.sh" ((FAILURES+=1)) fi +if Meta/lint-swift.sh "$@" && git diff --exit-code -- ':*.swift'; then + echo -e "[${GREEN}OK${NC}]: Meta/lint-swift.sh" +else + echo -e "[${RED}FAIL${NC}]: Meta/lint-swift.sh" + ((FAILURES+=1)) +fi + exit "${FAILURES}" diff --git a/Meta/lint-swift.sh b/Meta/lint-swift.sh new file mode 100755 index 00000000000..8b0a210c6ca --- /dev/null +++ b/Meta/lint-swift.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -e + +script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +cd "${script_path}/.." || exit 1 + +if [ "$#" -eq "0" ]; then + files=() + while IFS= read -r file; do + files+=("$file") + done < <( + git ls-files '*.swift' + ) +else + files=() + for file in "$@"; do + if [[ "${file}" == *".swift" ]] ; then + files+=("${file}") + fi + done +fi + +if (( ${#files[@]} )); then + if ! command -v swift-format >/dev/null 2>&1 ; then + echo "swift-format is not available, but Swift files need linting! Either skip this script, or install swift-format." + exit 1 + fi + swift-format -i "${files[@]}" + echo "Maybe some files have changed. Sorry, but swift-format doesn't indicate what happened." +else + echo "No .swift files to check." +fi