Skip to content

Commit 6d02ade

Browse files
committed
refactor: make CLI async
1 parent c6352d4 commit 6d02ade

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

cli.js

+16-15
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#!/usr/bin/env node
2-
import { globbySync } from 'globby'
3-
import fs from 'node:fs'
2+
import { globbyStream } from 'globby'
3+
import fs from 'node:fs/promises'
44
import sortPackageJson from './index.js'
55
import Reporter from './reporter.js'
66

7-
function showVersion() {
7+
async function showVersion() {
88
const { name, version } = JSON.parse(
9-
fs.readFileSync(new URL('package.json', import.meta.url)),
9+
await fs.readFile(new URL('package.json', import.meta.url)),
1010
)
1111

1212
console.log(`${name} ${version}`)
@@ -27,28 +27,29 @@ If file/glob is omitted, './package.json' file will be processed.
2727
)
2828
}
2929

30-
function sortPackageJsonFile(file, reporter, isCheck) {
31-
const original = fs.readFileSync(file, 'utf8')
30+
async function sortPackageJsonFile(file, reporter, isCheck) {
31+
const original = await fs.readFile(file, 'utf8')
3232
const sorted = sortPackageJson(original)
3333
if (sorted === original) {
3434
return reporter.reportNotChanged(file)
3535
}
3636

3737
if (!isCheck) {
38-
fs.writeFileSync(file, sorted)
38+
await fs.writeFile(file, sorted)
3939
}
4040

4141
reporter.reportChanged(file)
4242
}
4343

44-
function sortPackageJsonFiles(patterns, options) {
45-
const files = globbySync(patterns)
46-
const reporter = new Reporter(files, options)
44+
async function sortPackageJsonFiles(patterns, options) {
45+
const reporter = new Reporter(options)
4746
const { isCheck } = options
4847

49-
for (const file of files) {
48+
for await (const file of globbyStream(patterns)) {
49+
reporter.reportFound(file);
50+
5051
try {
51-
sortPackageJsonFile(file, reporter, isCheck)
52+
await sortPackageJsonFile(file, reporter, isCheck)
5253
} catch (error) {
5354
reporter.reportFailed(file, error)
5455
}
@@ -57,7 +58,7 @@ function sortPackageJsonFiles(patterns, options) {
5758
reporter.printSummary()
5859
}
5960

60-
function run() {
61+
async function run() {
6162
const cliArguments = process.argv.slice(2)
6263

6364
if (
@@ -92,7 +93,7 @@ function run() {
9293
patterns[0] = 'package.json'
9394
}
9495

95-
sortPackageJsonFiles(patterns, { isCheck, shouldBeQuiet })
96+
await sortPackageJsonFiles(patterns, { isCheck, shouldBeQuiet })
9697
}
9798

98-
run()
99+
await run()

reporter.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ class Reporter {
66
#status
77
#logger
88

9-
constructor(files, options) {
9+
constructor(options) {
1010
this.#options = options
1111
this.#status = {
12-
matchedFilesCount: files.length,
12+
matchedFilesCount: 0,
1313
failedFilesCount: 0,
1414
wellSortedFilesCount: 0,
1515
changedFilesCount: 0,
@@ -29,6 +29,10 @@ class Reporter {
2929
}
3030
}
3131

32+
reportFound(/* file */) {
33+
this.#status.matchedFilesCount++
34+
}
35+
3236
// The file is well-sorted
3337
reportNotChanged(/* file */) {
3438
this.#status.wellSortedFilesCount++

0 commit comments

Comments
 (0)