mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-06 22:24:12 -05:00
93 lines
2.3 KiB
Ruby
93 lines
2.3 KiB
Ruby
require 'package'
|
|
|
|
class Linter < Package
|
|
description 'Comprehensive linter and code analysis for various file types.'
|
|
homepage 'https://github.com/chromebrew/chromebrew'
|
|
version '1.4'
|
|
license 'GPL-3'
|
|
compatibility 'all'
|
|
source_url 'SKIP'
|
|
|
|
no_compile_needed
|
|
no_upstream_update
|
|
|
|
depends_on 'py3_codespell'
|
|
depends_on 'ruby_mdl'
|
|
depends_on 'ruby_rubocop'
|
|
depends_on 'ruby_yaml_lint'
|
|
depends_on 'shellcheck'
|
|
|
|
def self.build
|
|
linter = <<~EOF
|
|
#!/bin/bash
|
|
export PATH=#{CREW_PREFIX}/bin:$PATH
|
|
if test "$1"; then
|
|
files="$*"
|
|
else
|
|
files="$(git ls-files -om | xargs)"
|
|
fi
|
|
for file in $files; do
|
|
ext="${file##*.}"
|
|
if ! [[ "$ext" =~ ^(md|rb|sh|yml|yaml)$ ]]; then
|
|
type="$(file -b "$file" | cut -d' ' -f1)"
|
|
case $type in
|
|
Bourne-Again)
|
|
ext="sh"
|
|
;;
|
|
HTML)
|
|
ext="md"
|
|
;;
|
|
Ruby)
|
|
ext="rb"
|
|
;;
|
|
esac
|
|
fi
|
|
case $ext in
|
|
md)
|
|
mdl -c "$HOME/.mdlrc" "$file"
|
|
;;
|
|
rb)
|
|
rubocop "$file"
|
|
;;
|
|
sh)
|
|
shellcheck "$file"
|
|
;;
|
|
yml|yaml)
|
|
yaml-lint "$file"
|
|
;;
|
|
*)
|
|
echo "Unable to check syntax of $file."
|
|
;;
|
|
esac
|
|
codespell "$file"
|
|
done
|
|
EOF
|
|
File.write('linter', linter)
|
|
mdlrc = <<~EOF
|
|
style "#{Dir.home}/.mdl_style.rb"
|
|
EOF
|
|
File.write('.mdlrc', mdlrc)
|
|
mdl_style = <<~EOF
|
|
all
|
|
# Ignore 80 character line length limit.
|
|
exclude_rule 'MD013'
|
|
# Ignore horizontal rule style.
|
|
exclude_rule 'MD035'
|
|
# Ignore emphasis used instead of a header.
|
|
exclude_rule 'MD036'
|
|
# Ignore first line in file should be a top level header.
|
|
exclude_rule 'MD041'
|
|
# Ignore code block style.
|
|
exclude_rule 'MD046'
|
|
EOF
|
|
File.write('.mdl_style.rb', mdl_style)
|
|
end
|
|
|
|
def self.install
|
|
FileUtils.mkdir_p CREW_DEST_HOME.to_s
|
|
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/bin"
|
|
FileUtils.install 'linter', "#{CREW_DEST_PREFIX}/bin", mode: 0o755
|
|
FileUtils.install ['.mdlrc', '.mdl_style.rb'], CREW_DEST_HOME.to_s, mode: 0o644
|
|
end
|
|
end
|