#!/bin/bash -e
#
# script/lint
# mas
#
# Linting checks for development and CI.
#
# Reports style violations without making any modifications to the code.
#
# Please keep in sync with script/format.
#

echo "==> 🚨 Linting mas"

for LINTER in git markdownlint periphery shfmt swiftformat swiftlint; do
  if [[ ! -x "$(command -v ${LINTER})" ]]; then
    echo "error: ${LINTER} is not installed. Run 'script/bootstrap' or 'brew install ${LINTER}'."
    exit 1
  fi
done

echo "--> 🌳 Git"
git diff --check

echo
echo "--> 🖊 Markdown"
markdownlint --config .markdownlint.json .github .

echo
echo "--> 🕊️ Swift"
for SOURCE in Package.swift Sources Tests; do
  swiftformat --lint ${SOURCE}
  swift run swift-format lint --recursive ${SOURCE}
  swiftlint lint --strict ${SOURCE}
done
periphery scan

echo
echo "--> 📜 Bash"
shellcheck --shell=bash script/*
shfmt -d -i 2 -l contrib/ script/
