Skip to content

Commit 86691cc

Browse files
committed
fix: Do not print file names twice in the compact mode
1 parent cb3826c commit 86691cc

File tree

1 file changed

+42
-19
lines changed

1 file changed

+42
-19
lines changed

lib/cli.js

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ function separateBlocks() {
120120

121121
function logNormalError (error, file) {
122122
separateBlocks()
123-
console.log('File:', file)
123+
console.info('File:', file)
124124
console.error(error.message)
125125
}
126126

@@ -217,21 +217,34 @@ function ensureLineBreak (parsed, source) {
217217
}
218218

219219
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
221223
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}`
224227
if (options.compact) {
225-
logCompactError(err, file)
228+
console.error(`${file}: ${message}`)
226229
} 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)
228236
}
229-
console.log(diff)
230237
if (options.continue) {
231238
process.exitCode = 1
232239
} else {
233240
process.exit(1)
234241
}
242+
} else {
243+
if (options.compact) {
244+
console.info(`${file}: no difference`)
245+
} else if (options.logFiles) {
246+
console.info(file)
247+
}
235248
}
236249
}
237250

@@ -248,28 +261,33 @@ function diffContents(file, source, parsed) {
248261
}
249262
if (length > 0) {
250263
if (compact) {
251-
const hunk = length === 1 ? 'hunk' : 'hunks'
264+
const hunk = length === 1 ? 'hunk differs' : 'hunks differ'
252265
console.info(`${file}: ${length} ${hunk}`)
253266
} else {
254267
separateBlocks()
255-
console.log('File:', file)
268+
console.info('File:', file)
256269
console.log(diff)
257270
}
258271
} else {
259-
if (compact) {
272+
if (options.compact) {
260273
console.info(`${file}: no difference`)
274+
} else if (options.logFiles) {
275+
console.info(file)
261276
}
262277
}
263278
}
264279

265280
function processFile (file) {
266281
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)
269284
}
270285
const source = readFileSync(file, 'utf8')
271286
const parsed = processContents(source, file)
272287
if (options.inPlace) {
288+
if (options.logFiles && options.compact) {
289+
console.info(file)
290+
}
273291
writeFileSync(file, ensureLineBreak(parsed, source))
274292
} else if (options.check) {
275293
checkContents(file, source, ensureLineBreak(parsed, source))
@@ -300,21 +318,21 @@ function processSource (src, checkExtension) {
300318
}
301319
}
302320
} catch ({ message }) {
303-
console.log('WARN', message)
321+
console.warn('WARN', message)
304322
}
305323
}
306324

307325
function processPatterns (patterns) {
308326
const files = sync(patterns, { onlyFiles: true })
309327
if (!files.length) {
310-
console.log('no files found')
328+
console.error('no files found')
311329
process.exit(1)
312330
}
313331
for (const file of files) {
314332
try {
315333
processFile(file)
316334
} catch ({ message }) {
317-
console.log('WARN', message)
335+
console.warn('WARN', message)
318336
}
319337
}
320338
}
@@ -342,16 +360,21 @@ function main () {
342360
})
343361
stdin.on('end', () => {
344362
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)
347365
}
348366
const parsed = processContents(source, file)
349367
if (options.check) {
350368
checkContents(file, source, ensureLineBreak(parsed, source))
351369
} else if (options.diff) {
352370
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+
}
355378
}
356379
})
357380
}

0 commit comments

Comments
 (0)