mas/script/format
Ross Goldberg 53958a40c5
Write to stderr where appropriate.
Partial #638

Signed-off-by: Ross Goldberg <484615+rgoldberg@users.noreply.github.com>
2024-11-16 14:48:12 -05:00

51 lines
1.3 KiB
Bash
Executable file

#!/bin/bash -eu
#
# script/format
# mas
#
# Linting checks for development and CI.
#
# Automatically formats and fixes style violations using various tools.
#
# Please keep in sync with script/lint.
#
mas_dir="$(readlink -fn "$(dirname "${BASH_SOURCE:-"${0}"}")/..")"
if ! cd -- "${mas_dir}"; then
printf $'Error: Could not cd into mas directory: %s\n' "${mas_dir}" >&2
exit 1
fi
printf $'==> 🚨 Formatting mas\n'
for LINTER in markdownlint prettier shfmt swift-format swiftformat swiftlint yamllint; do
if [[ ! -x "$(command -v "${LINTER}")" ]]; then
printf $'error: %s is not installed. Run \'script/bootstrap\' or \'brew install %s\'.\n' "${LINTER}" "${LINTER}" >&2
exit 1
fi
done
for SOURCE in Package.swift Sources Tests; do
printf -- $'--> 🕊 %s swift-format\n' "${SOURCE}"
swift-format format --in-place --recursive "${SOURCE}"
printf -- $'--> 🕊 %s swiftformat\n' "${SOURCE}"
swiftformat "${SOURCE}"
printf -- $'--> 🕊 %s swiftlint\n' "${SOURCE}"
swiftlint --fix --strict "${SOURCE}"
done
printf -- $'--> 📜 Bash shfmt\n'
shfmt \
--write \
--list \
--indent 2 \
--case-indent \
contrib/ script/
printf -- $'--> 〽️ Markdown\n'
markdownlint --config .markdownlint.json --fix .github .
printf -- $'--> 🖊 YAML\n'
# shellcheck disable=SC2046
prettier --write $(yamllint --list-files .)