multiple swiftlint rules script

This commit is contained in:
Maxim Sorokin 2020-06-15 14:38:44 +03:00
parent 0b5f8ba670
commit 4ebcbadea2
1 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,70 @@
#!/bin/bash
sourceDirectiry=${1:-${TARGET_NAME}}/.. # first argument or TARGET_NAME
sourceTimestamp=$(date -j -f "%Y:%m:%d %H:%M:%S" '2020:05:20 00:00:00' +%s)
touchInstinctYml="$sourceDirectiry/build-scripts/xcode/.swiftlint.yml"
swiftlint=${PODS_ROOT}/SwiftLint/swiftlint
oldYml="$sourceDirectiry/.swiftlint.yml"
excludeDirectories=("vendor" "Tests" "Mock" "Pods" "build-scripts" "nmir-loyaltyTests" "common" ".gem" "node_modules" "Framework" "fastlane")
availableExtensions=(".swift")
function runSwiftlint() {
config=""
if [[ $2 = "true" ]]; then
config=$touchInstinctYml
else
config=$oldYml
fi
$swiftlint autocorrect --path $1 --config $config && $swiftlint --path $1 --config $config
}
function compareTimestamp() {
currentFileTimestamp=$(stat -f%B "$1")
diff=$(($sourceTimestamp - $currentFileTimestamp))
if [[ $diff -lt 0 ]]; then
runSwiftlint "$filePath" true
else
runSwiftlint "$filePath" false
fi
}
function isExcludedDirectory() {
for excludeFile in ${excludeDirectories[*]} ; do
if [[ $1 == *$excludeFile* ]]; then
return 1
fi
done
return 0
}
function isValidExtensions() {
for extension in ${availableExtensions[*]} ; do
if [[ $1 == *$extension* ]]; then
return 1
fi
done
return 0
}
function findFiles() {
for filePath in "$1"/* ; do
if [[ -d "$filePath" ]]; then
isExcludedDirectory "$filePath"
isExcludedDirectory=$?
if [[ ($isExcludedDirectory == 0) ]]; then
findFiles "$filePath"
fi
else
isValidExtensions "$filePath"
isValidExtensions=$?
if [[ $isValidExtensions == 1 ]]; then
compareTimestamp "$filePath"
fi
fi
done
}
findFiles "$sourceDirectiry"