@@ -120,7 +120,7 @@ function separateBlocks() {
120
120
121
121
function logNormalError ( error , file ) {
122
122
separateBlocks ( )
123
- console . log ( 'File:' , file )
123
+ console . info ( 'File:' , file )
124
124
console . error ( error . message )
125
125
}
126
126
@@ -217,21 +217,34 @@ function ensureLineBreak (parsed, source) {
217
217
}
218
218
219
219
function checkContents ( file , source , parsed ) {
220
- const { createTwoFilesPatch } = require ( 'diff' )
220
+ const { createTwoFilesPatch, structuredPatch } = require ( 'diff' )
221
+ const structured = structuredPatch ( `${ file } .orig` , file , source , parsed , '' , '' , { context : 3 } )
222
+ const length = structured . hunks && structured . hunks . length
221
223
const diff = createTwoFilesPatch ( `${ file } .orig` , file , source , parsed , '' , '' , { context : 3 } )
222
- if ( diff . split ( / \r ? \n / ) . length > 4 ) {
223
- const err = new Error ( 'Formatted output differs' )
224
+ if ( length > 0 ) {
225
+ const hunk = length === 1 ? 'hunk differs' : 'hunks differ'
226
+ const message = `${ length } ${ hunk } `
224
227
if ( options . compact ) {
225
- logCompactError ( err , file )
228
+ console . error ( ` ${ file } : ${ message } ` )
226
229
} else {
227
- logNormalError ( err , file )
230
+ separateBlocks ( )
231
+ console . info ( 'File:' , file )
232
+ console . error ( message )
233
+ }
234
+ if ( ! options . quiet ) {
235
+ console . log ( diff )
228
236
}
229
- console . log ( diff )
230
237
if ( options . continue ) {
231
238
process . exitCode = 1
232
239
} else {
233
240
process . exit ( 1 )
234
241
}
242
+ } else {
243
+ if ( options . compact ) {
244
+ console . info ( `${ file } : no difference` )
245
+ } else if ( options . logFiles ) {
246
+ console . info ( file )
247
+ }
235
248
}
236
249
}
237
250
@@ -248,28 +261,33 @@ function diffContents(file, source, parsed) {
248
261
}
249
262
if ( length > 0 ) {
250
263
if ( compact ) {
251
- const hunk = length === 1 ? 'hunk' : 'hunks'
264
+ const hunk = length === 1 ? 'hunk differs ' : 'hunks differ '
252
265
console . info ( `${ file } : ${ length } ${ hunk } ` )
253
266
} else {
254
267
separateBlocks ( )
255
- console . log ( 'File:' , file )
268
+ console . info ( 'File:' , file )
256
269
console . log ( diff )
257
270
}
258
271
} else {
259
- if ( compact ) {
272
+ if ( options . compact ) {
260
273
console . info ( `${ file } : no difference` )
274
+ } else if ( options . logFiles ) {
275
+ console . info ( file )
261
276
}
262
277
}
263
278
}
264
279
265
280
function processFile ( file ) {
266
281
file = normalize ( file )
267
- if ( options . logFiles ) {
268
- console . log ( file )
282
+ if ( options . logFiles && ! ( options . compact || options . check || options . diff ) ) {
283
+ console . info ( file )
269
284
}
270
285
const source = readFileSync ( file , 'utf8' )
271
286
const parsed = processContents ( source , file )
272
287
if ( options . inPlace ) {
288
+ if ( options . logFiles && options . compact ) {
289
+ console . info ( file )
290
+ }
273
291
writeFileSync ( file , ensureLineBreak ( parsed , source ) )
274
292
} else if ( options . check ) {
275
293
checkContents ( file , source , ensureLineBreak ( parsed , source ) )
@@ -300,21 +318,21 @@ function processSource (src, checkExtension) {
300
318
}
301
319
}
302
320
} catch ( { message } ) {
303
- console . log ( 'WARN' , message )
321
+ console . warn ( 'WARN' , message )
304
322
}
305
323
}
306
324
307
325
function processPatterns ( patterns ) {
308
326
const files = sync ( patterns , { onlyFiles : true } )
309
327
if ( ! files . length ) {
310
- console . log ( 'no files found' )
328
+ console . error ( 'no files found' )
311
329
process . exit ( 1 )
312
330
}
313
331
for ( const file of files ) {
314
332
try {
315
333
processFile ( file )
316
334
} catch ( { message } ) {
317
- console . log ( 'WARN' , message )
335
+ console . warn ( 'WARN' , message )
318
336
}
319
337
}
320
338
}
@@ -342,16 +360,21 @@ function main () {
342
360
} )
343
361
stdin . on ( 'end' , ( ) => {
344
362
const file = '<stdin>'
345
- if ( options . logFiles ) {
346
- console . log ( file )
363
+ if ( options . logFiles && ! ( options . compact || options . check || options . diff ) ) {
364
+ console . info ( file )
347
365
}
348
366
const parsed = processContents ( source , file )
349
367
if ( options . check ) {
350
368
checkContents ( file , source , ensureLineBreak ( parsed , source ) )
351
369
} else if ( options . diff ) {
352
370
diffContents ( file , source , ensureLineBreak ( parsed , source ) )
353
- } else if ( ! ( options . quiet || options . logFiles ) ) {
354
- console . log ( parsed )
371
+ } else {
372
+ if ( options . logFiles && options . compact ) {
373
+ console . info ( file )
374
+ }
375
+ if ( ! ( options . quiet || options . logFiles ) ) {
376
+ console . log ( parsed )
377
+ }
355
378
}
356
379
} )
357
380
}
0 commit comments