Files
has_aux_table/lefthook.yml
2025-07-13 01:37:31 +00:00

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"