refactor: add FORCE_LINT arg
This commit is contained in:
parent
5a6dd866f7
commit
9e8d088017
|
|
@ -12,14 +12,19 @@
|
||||||
# SRCROOT - project directory.
|
# SRCROOT - project directory.
|
||||||
# PODS_ROOT - cocoapods installation directory (eg. ${SRCROOT}/Pods).
|
# PODS_ROOT - cocoapods installation directory (eg. ${SRCROOT}/Pods).
|
||||||
#
|
#
|
||||||
|
# Available environment variables:
|
||||||
|
# FORCE_LINT - lint all project.
|
||||||
|
#
|
||||||
# Optional environment variables:
|
# Optional environment variables:
|
||||||
# SWIFTLINT_EXECUTABLE - path to swiftlint executable.
|
# SWIFTLINT_EXECUTABLE - path to swiftlint executable.
|
||||||
# SWIFTLINT_CONFIG_PATH - path to swiftlint config.
|
# SWIFTLINT_CONFIG_PATH - path to swiftlint config.
|
||||||
# SCRIPT_INPUT_FILE_COUNT - number of files listed in "Input files" of build phase.
|
# SCRIPT_INPUT_FILE_COUNT - number of files listed in "Input files" of build phase.
|
||||||
# SCRIPT_INPUT_FILE_{N} - file path to directory that should be checked.
|
# SCRIPT_INPUT_FILE_{N} - file path to directory that should be checked.
|
||||||
|
# FORCE_LINT - lint all project.
|
||||||
#
|
#
|
||||||
# Example of usage:
|
# Example of usage:
|
||||||
# swiftlint.sh
|
# swiftlint.sh
|
||||||
|
# FORCE_LINT=true; swiftlint.sh
|
||||||
# swiftlint.sh Pods/Swiftlint/swiftlint build-scripts/xcode/.swiftlint.yml
|
# swiftlint.sh Pods/Swiftlint/swiftlint build-scripts/xcode/.swiftlint.yml
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
@ -41,37 +46,45 @@ if [ -z "${SWIFTLINT_CONFIG_PATH}" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Xcode упадет, если будем использовать большое количество Script Input Files,
|
if [ ! -z "${FORCE_LINT}" ]; then
|
||||||
# так как просто переполнится стек - https://unix.stackexchange.com/questions/357843/setting-a-long-environment-variable-breaks-a-lot-of-commands
|
# Если задана переменная FORCE_LINT, то проверяем все файлы проекта
|
||||||
# Поэтому воспользуемся "скрытым" параметром Swiflint - https://github.com/realm/SwiftLint/pull/3313
|
for SOURCE_DIR in ${SOURCES_DIRS}; do
|
||||||
# Создадим временный файл swiftlint_files с префиксом @ и в нем уже определим список файлов
|
${SWIFTLINT_EXECUTABLE} autocorrect --path ${SOURCE_DIR} --config ${SWIFTLINT_CONFIG_PATH}
|
||||||
# необходимых для линтовки :)
|
${SWIFTLINT_EXECUTABLE} --path ${SOURCE_DIR} --config ${SWIFTLINT_CONFIG_PATH}
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# Xcode упадет, если будем использовать большое количество Script Input Files,
|
||||||
|
# так как просто переполнится стек - https://unix.stackexchange.com/questions/357843/setting-a-long-environment-variable-breaks-a-lot-of-commands
|
||||||
|
# Поэтому воспользуемся "скрытым" параметром Swiflint - https://github.com/realm/SwiftLint/pull/3313
|
||||||
|
# Создадим временный файл swiftlint_files с префиксом @ и в нем уже определим список файлов
|
||||||
|
# необходимых для линтовки :)
|
||||||
|
|
||||||
lint_files_path="${SRCROOT}/build_phases/swiftlint_files"
|
lint_files_path="${SRCROOT}/build_phases/swiftlint_files"
|
||||||
|
|
||||||
if [ ! -z "${lint_files_path}" ]; then
|
if [ ! -z "${lint_files_path}" ]; then
|
||||||
> ${lint_files_path} # Если файл существует, то просто его очистим
|
> ${lint_files_path} # Если файл существует, то просто его очистим
|
||||||
else
|
else
|
||||||
touch ${lint_files_path} # Если файла нет, то создадим его
|
touch ${lint_files_path} # Если файла нет, то создадим его
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Проходимся по папкам, которые требуют линтовки
|
||||||
|
for SOURCE_DIR in ${SOURCES_DIRS}; do
|
||||||
|
|
||||||
|
# Отбираем файлы, которые были изменены или созданы
|
||||||
|
source_unstaged_files=$(git diff --diff-filter=d --name-only ${SOURCE_DIR} | grep "\.swift$")
|
||||||
|
source_staged_files=$(git diff --diff-filter=d --name-only --cached ${SOURCE_DIR} | grep "\.swift$")
|
||||||
|
|
||||||
|
if [ ! -z "${source_unstaged_files}" ]; then
|
||||||
|
echo "${source_unstaged_files}" >> ${lint_files_path}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "${source_staged_files}" ]; then
|
||||||
|
echo "${source_staged_files}" >> ${lint_files_path}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
swiftlint_files_path="@${lint_files_path}"
|
||||||
|
|
||||||
|
${SWIFTLINT_EXECUTABLE} autocorrect --path ${swiftlint_files_path} --config ${SWIFTLINT_CONFIG_PATH} --force-exclude --use-alternative-excluding
|
||||||
|
${SWIFTLINT_EXECUTABLE} --path ${swiftlint_files_path} --config ${SWIFTLINT_CONFIG_PATH} --force-exclude --use-alternative-excluding
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проходимся по папкам, которые требуют линтовки
|
|
||||||
for SOURCE_DIR in ${SOURCES_DIRS}; do
|
|
||||||
|
|
||||||
# Отбираем файлы, которые были изменены или созданы
|
|
||||||
source_unstaged_files=$(git diff --diff-filter=d --name-only ${SOURCE_DIR} | grep "\.swift$")
|
|
||||||
source_staged_files=$(git diff --diff-filter=d --name-only --cached ${SOURCE_DIR} | grep "\.swift$")
|
|
||||||
|
|
||||||
if [ ! -z "${source_unstaged_files}" ]; then
|
|
||||||
echo "${source_unstaged_files}" >> ${lint_files_path}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -z "${source_staged_files}" ]; then
|
|
||||||
echo "${source_staged_files}" >> ${lint_files_path}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
swiftlint_files_path="@${lint_files_path}"
|
|
||||||
|
|
||||||
${SWIFTLINT_EXECUTABLE} autocorrect --path ${swiftlint_files_path} --config ${SWIFTLINT_CONFIG_PATH} --force-exclude --use-alternative-excluding
|
|
||||||
${SWIFTLINT_EXECUTABLE} lint --path ${swiftlint_files_path} --config ${SWIFTLINT_CONFIG_PATH} --force-exclude --use-alternative-excluding
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue