71 lines
1.8 KiB
Bash
71 lines
1.8 KiB
Bash
#!/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"
|