Jelajahi Sumber

fix: Correct grep output when asking for line numbers

A couple of issues here:
- We didn't pass the line number to do_grep_line() so `i` was undefined
- Operator precedence messed with the ternary so when line numbers were
  requested, the line wouldn't be output.

Found thanks to this now-solved eslint issue:

/puter/packages/phoenix/src/puter-shell/coreutils/grep.js
  100:60  error  'i' is not defined  no-undef
Sam Atkins 1 tahun lalu
induk
melakukan
c8a20cadbf
1 mengubah file dengan 7 tambahan dan 8 penghapusan
  1. 7 8
      packages/phoenix/src/puter-shell/coreutils/grep.js

+ 7 - 8
packages/phoenix/src/puter-shell/coreutils/grep.js

@@ -78,7 +78,7 @@ export default {
             }
             }
         }
         }
         
         
-        const do_grep_line = async ( line ) => {
+        const do_grep_line = async ( line, lineNumber ) => {
             if ( line.endsWith('\n') ) line = line.slice(0, -1);
             if ( line.endsWith('\n') ) line = line.slice(0, -1);
             const re = new RegExp(
             const re = new RegExp(
                 pattern,
                 pattern,
@@ -97,10 +97,9 @@ export default {
             );
             );
 
 
             if ( lxor(values['invert-match'], re.test(line)) ) {
             if ( lxor(values['invert-match'], re.test(line)) ) {
-                const lineNumber = values['line-number'] ? i + 1 : '';
-                const lineToPrint =
-                        lineNumber ? lineNumber + ':' : '' +
-                        line;
+                const lineToPrint = values['line-number']
+                    ? `${lineNumber + 1}:${line}`
+                    : line;
                     
                     
                 console.log(`LINE{${lineToPrint}}`);
                 console.log(`LINE{${lineToPrint}}`);
                 await ctx.externs.out.write(lineToPrint + '\n');
                 await ctx.externs.out.write(lineToPrint + '\n');
@@ -111,7 +110,7 @@ export default {
             for ( let i=0 ; i < lines.length ; i++ ) {
             for ( let i=0 ; i < lines.length ; i++ ) {
                 const line = lines[i];
                 const line = lines[i];
 
 
-                await do_grep_line(line);
+                await do_grep_line(line, i);
             }
             }
         }
         }
 
 
@@ -139,10 +138,10 @@ export default {
 
 
         for ( let file of files ) {
         for ( let file of files ) {
             if ( file === '-' ) {
             if ( file === '-' ) {
-                for ( ;; ) {
+                for ( let i = 0; ; i++) {
                     const { value, done } = await ctx.externs.in_.read();
                     const { value, done } = await ctx.externs.in_.read();
                     if ( done ) break;
                     if ( done ) break;
-                    await do_grep_line(value);
+                    await do_grep_line(value, i);
                 }
                 }
             } else {
             } else {
                 file = resolveRelativePath(ctx.vars, file);
                 file = resolveRelativePath(ctx.vars, file);