@@ -4,10 +4,10 @@ const fs = require('fs');
44
55/**
66 * Filters out specified files from a git diff
7- * Usage: node filter_diff.js <diff_file> <ignore_files_comma_separated>
7+ * Usage: node filter_diff.js <diff_file> <ignore_files_comma_separated> [max_lines]
88 */
99
10- function filterDiff ( diffContent , ignoreFiles ) {
10+ function filterDiff ( diffContent , ignoreFiles , maxLines = null ) {
1111 if ( ! ignoreFiles || ignoreFiles . trim ( ) === '' ) {
1212 return diffContent ;
1313 }
@@ -55,15 +55,24 @@ function filterDiff(diffContent, ignoreFiles) {
5555 }
5656 }
5757
58- return filteredLines . join ( '\n' ) ;
58+ let result = filteredLines . join ( '\n' ) ;
59+
60+ // Apply line limit if specified
61+ if ( maxLines && filteredLines . length > maxLines ) {
62+ const truncatedLines = filteredLines . slice ( 0 , maxLines ) ;
63+ truncatedLines . push ( '' , '# ... (diff truncated due to size limits) ...' , '' ) ;
64+ result = truncatedLines . join ( '\n' ) ;
65+ }
66+
67+ return result ;
5968}
6069
6170// Main execution
6271if ( require . main === module ) {
63- const [ , , diffFile , ignoreFiles ] = process . argv ;
72+ const [ , , diffFile , ignoreFiles , maxLines ] = process . argv ;
6473
6574 if ( ! diffFile ) {
66- console . error ( 'Usage: filter_diff.js <diff_file> <ignore_files_comma_separated>' ) ;
75+ console . error ( 'Usage: filter_diff.js <diff_file> <ignore_files_comma_separated> [max_lines] ' ) ;
6776 process . exit ( 1 ) ;
6877 }
6978
@@ -74,7 +83,8 @@ if (require.main === module) {
7483
7584 try {
7685 const diffContent = fs . readFileSync ( diffFile , 'utf8' ) ;
77- const filteredDiff = filterDiff ( diffContent , ignoreFiles || '' ) ;
86+ const maxLinesInt = maxLines ? parseInt ( maxLines , 10 ) : null ;
87+ const filteredDiff = filterDiff ( diffContent , ignoreFiles || '' , maxLinesInt ) ;
7888
7989 // Write filtered diff back to the same file
8090 fs . writeFileSync ( diffFile , filteredDiff , 'utf8' ) ;
@@ -88,6 +98,9 @@ if (require.main === module) {
8898 if ( ignoreFiles ) {
8999 console . error ( `Ignored files: ${ ignoreFiles } ` ) ;
90100 }
101+ if ( maxLinesInt && originalLines > maxLinesInt ) {
102+ console . error ( `Applied line limit: ${ maxLinesInt } ` ) ;
103+ }
91104 } catch ( error ) {
92105 console . error ( `Error filtering diff: ${ error . message } ` ) ;
93106 process . exit ( 1 ) ;
0 commit comments