#!/bin/zsh -Ndefgku
#
# Scripts/format
# mas
#
# Automatically formats & fixes style violations using various tools.
#
# Please keep in sync with Scripts/lint.
#

. "${0:a:h}/_setup_script"

print_header '🧹 Formatting mas' "$(Scripts/version)"

for formatter in markdownlint-cli2 swiftformat swiftlint; do
	if ! whence "${formatter}" >/dev/null; then
		printf $'error: %s is not installed. Run \'Scripts/bootstrap\' or \'brew install %s\'.\n' "${formatter}" "${formatter}" >&2
		exit 1
	fi
done

for source in Package.swift Sources Tests; do
	printf -- $'--> 🦅 %s swiftformat\n' "${source}"
	script -q /dev/null swiftformat --strict "${source}" |
	 (grep -vxE '(?:\^D\x08{2})?Running SwiftFormat\.{3}\r|Reading (?:config|swift-version) file at .*|\x1b\[32mSwiftFormat completed in \d+(?:\.\d+)?s\.\x1b\[0m\r|0/\d+ files formatted\.\r' || true)
	printf -- $'--> 🦅 %s swiftlint\n' "${source}"
	swiftlint --fix --quiet --reporter relative-path "${source}"
done

printf -- $'--> 〽️ Markdown\n'
markdownlint-cli2 --fix '**/*.md'
