Skip to content

Instantly share code, notes, and snippets.

@RyogaK
Created April 13, 2017 07:51
Show Gist options
  • Save RyogaK/5cc1b203307af56e830fcef693abd91b to your computer and use it in GitHub Desktop.
Save RyogaK/5cc1b203307af56e830fcef693abd91b to your computer and use it in GitHub Desktop.
Run SwiftLint for only diff.
#!/bin/bash
# Run SwiftLint
START_DATE=$(date +"%s")
SWIFT_LINT=/usr/local/bin/swiftlint
# Run SwiftLint for given filename
run_swiftlint() {
local filename="${1}"
# Ignore Pods/ paths
[[ "${filename}" =~ Pods/ ]] && return
if [[ "${filename##*.}" == "swift" ]]; then
${SWIFT_LINT} autocorrect --path "${filename}"
${SWIFT_LINT} lint --path "${filename}"
fi
}
if [[ -e "${SWIFT_LINT}" ]]; then
echo "SwiftLint version: $(${SWIFT_LINT} version)"
# Run for both staged and unstaged files
git diff --name-only | while read -r filename; do run_swiftlint "${filename}"; done
git diff --cached --name-only | while read -r filename; do run_swiftlint "${filename}"; done
else
echo "Error: ${SWIFT_LINT} is not installed."
exit 1
fi
END_DATE=$(date +"%s")
DIFF=$((END_DATE - START_DATE))
echo "SwiftLint took $((DIFF / 60)) minutes and $((DIFF % 60)) seconds to complete."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment