Files
has_aux_table/lefthook.yml
Dylan Knutson 30b017906f more ar hacking
2025-07-14 05:44:01 +00:00

98 lines
2.6 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"
exclude:
- .devcontainer/devcontainer.json
- .vscode/*.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"
# Filter out comment lines first, then check for debug statements
if grep -v "^\s*#" "$file" | grep -n "binding\.pry\|debugger\|byebug\|puts.*DEBUG\|^\s*p\s\|^\s*pp\s"; 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"