94 lines
2.4 KiB
YAML
94 lines
2.4 KiB
YAML
pre-commit:
|
|
commands:
|
|
syntax-tree:
|
|
glob: "*.rb,*.rbi,*.rbs"
|
|
run: bundle exec stree write {staged_files}
|
|
stage_fixed: true
|
|
exclude: |
|
|
vendor/
|
|
tmp/
|
|
log/
|
|
|
|
sorbet:
|
|
run: bundle exec srb tc
|
|
pass_filenames: false
|
|
fail_text: "Sorbet type checking failed"
|
|
|
|
tapioca-gems:
|
|
glob: "{Gemfile,Gemfile.lock}"
|
|
run: bundle exec tapioca gem --verify
|
|
pass_filenames: false
|
|
fail_text: "RBI files are out of date. Please run: bundle exec tapioca gems"
|
|
|
|
trailing-whitespace:
|
|
glob: "*.{rb,yml,yaml,json,md,rbi,rbs,gemspec}"
|
|
run: sed -i 's/[[:space:]]*$//' {staged_files}
|
|
stage_fixed: true
|
|
|
|
rspec:
|
|
run: bundle exec rspec
|
|
fail_text: "RSpec tests failed"
|
|
|
|
bundler-audit:
|
|
run: bundle exec bundler-audit check --update
|
|
pass_filenames: false
|
|
fail_text: "Security vulnerabilities found"
|
|
|
|
yaml-lint:
|
|
glob: "*.{yml,yaml}"
|
|
run: |
|
|
for file in {staged_files}; do
|
|
echo "Checking $file"
|
|
ruby -e "require 'yaml'; YAML.load_file('$file')" || exit 1
|
|
done
|
|
fail_text: "YAML syntax error"
|
|
|
|
json-lint:
|
|
glob: "*.json"
|
|
run: |
|
|
for file in {staged_files}; do
|
|
echo "Checking $file"
|
|
ruby -e "require 'json'; JSON.parse(File.read('$file'))" || exit 1
|
|
done
|
|
fail_text: "JSON syntax error"
|
|
|
|
gemspec-lint:
|
|
glob: "*.gemspec"
|
|
run: |
|
|
for file in {staged_files}; do
|
|
echo "Checking $file"
|
|
ruby -c "$file" || exit 1
|
|
done
|
|
fail_text: "Gemspec syntax error"
|
|
|
|
no-debug:
|
|
glob: "*.rb"
|
|
run: |
|
|
for file in {staged_files}; do
|
|
echo "Checking $file"
|
|
if grep -n "binding\.pry\|debugger\|byebug\|puts.*DEBUG\|p \|pp " "$file"; then
|
|
exit 1
|
|
fi
|
|
done
|
|
fail_text: "Debug statements found - please remove before committing"
|
|
|
|
file-size:
|
|
glob: "*"
|
|
run: |
|
|
for file in {staged_files}; do
|
|
if [ -f "$file" ]; then
|
|
size=$(stat -c%s "$file" 2>/dev/null || stat -f%z "$file" 2>/dev/null)
|
|
if [ "$size" -gt 1048576 ]; then
|
|
echo "File $file is larger than 1MB"
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
fail_text: "Large files detected (>1MB)"
|
|
|
|
pre-push:
|
|
commands:
|
|
rspec:
|
|
run: bundle exec rspec
|
|
fail_text: "Tests failed"
|