| #!/usr/bin/env node |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| const { readFile } = require('../lib/utils'); |
|
|
| const MAX_STDIN = 1024 * 1024; |
| let data = ''; |
| process.stdin.setEncoding('utf8'); |
|
|
| process.stdin.on('data', chunk => { |
| if (data.length < MAX_STDIN) { |
| const remaining = MAX_STDIN - data.length; |
| data += chunk.substring(0, remaining); |
| } |
| }); |
|
|
| process.stdin.on('end', () => { |
| try { |
| const input = JSON.parse(data); |
| const filePath = input.tool_input?.file_path; |
|
|
| if (filePath && /\.(ts|tsx|js|jsx)$/.test(filePath)) { |
| const content = readFile(filePath); |
| if (!content) { process.stdout.write(data); process.exit(0); } |
| const lines = content.split('\n'); |
| const matches = []; |
|
|
| lines.forEach((line, idx) => { |
| if (/console\.log/.test(line)) { |
| matches.push((idx + 1) + ': ' + line.trim()); |
| } |
| }); |
|
|
| if (matches.length > 0) { |
| console.error('[Hook] WARNING: console.log found in ' + filePath); |
| matches.slice(0, 5).forEach(m => console.error(m)); |
| console.error('[Hook] Remove console.log before committing'); |
| } |
| } |
| } catch { |
| |
| } |
|
|
| process.stdout.write(data); |
| process.exit(0); |
| }); |
|
|