M1芯片设备如何对Git未提交文件运行SwiftLint
适配M1芯片的SwiftLint脚本修改方案
M1系列芯片的Mac设备中,Homebrew默认的软件安装路径从Intel架构的/usr/local/bin变更为/opt/homebrew/bin,原脚本写死了Intel架构下的SwiftLint路径,所以在M1设备上会提示找不到SwiftLint,可根据使用场景选择以下任意一种方案修改:
方案1:仅M1设备使用(最简修改)
直接把原脚本中SWIFT_LINT=/usr/local/bin/swiftlint这一行替换为:SWIFT_LINT=/opt/homebrew/bin/swiftlint
修改完成后即可直接运行。
方案2:兼容Intel/M1双架构(推荐,团队共用脚本通用)
将原脚本中SWIFT_LINT=/usr/local/bin/swiftlint替换为以下自动判断逻辑,脚本会自动适配当前设备的架构路径,无需针对不同设备单独修改:
# 自动适配不同架构的SwiftLint路径 if [[ -x /opt/homebrew/bin/swiftlint ]]; then SWIFT_LINT=/opt/homebrew/bin/swiftlint elif [[ -x /usr/local/bin/swiftlint ]]; then SWIFT_LINT=/usr/local/bin/swiftlint else SWIFT_LINT="" fi
修改后完整可用脚本
# Run SwiftLint START_DATE=$(date +"%s") # 自动适配不同架构的SwiftLint路径 if [[ -x /opt/homebrew/bin/swiftlint ]]; then SWIFT_LINT=/opt/homebrew/bin/swiftlint elif [[ -x /usr/local/bin/swiftlint ]]; then SWIFT_LINT=/usr/local/bin/swiftlint else SWIFT_LINT="" fi # Run SwiftLint for given filename run_swiftlint() { local filename="${1}" 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 filename; do run_swiftlint "${filename}"; done git diff --cached --name-only | while read filename; do run_swiftlint "${filename}"; done else echo "SwiftLint is not installed." exit 0 fi END_DATE=$(date +"%s") DIFF=$(($END_DATE - $START_DATE)) echo "SwiftLint took $(($DIFF / 60)) minutes and $(($DIFF % 60)) seconds to complete."
内容的提问来源于stack exchange,提问作者user1898829
相关产品推荐
相关产品推荐

