Skip to content

Commit b042956

Browse files
committed
allow to pipe in data to the CLI
1 parent 7fae1ad commit b042956

File tree

1 file changed

+45
-6
lines changed

1 file changed

+45
-6
lines changed

src/cli.js

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,21 @@ async function outputFile(file, contents) {
5050
await fs.promises.writeFile(file, contents, 'utf8')
5151
}
5252

53+
function drainStdin() {
54+
return new Promise((resolve, reject) => {
55+
let result = ''
56+
process.stdin.on('readable', () => {
57+
let chunk
58+
while ((chunk = process.stdin.read()) !== null) {
59+
result += chunk
60+
}
61+
})
62+
63+
process.stdin.on('end', () => resolve(result))
64+
process.stdin.on('error', (err) => reject(err))
65+
})
66+
}
67+
5368
function help({ message, usage, commands, options }) {
5469
let indent = 2
5570

@@ -558,9 +573,21 @@ async function build() {
558573
})
559574
}
560575

561-
let css = input
562-
? fs.readFileSync(path.resolve(input), 'utf8')
563-
: '@tailwind base; @tailwind components; @tailwind utilities'
576+
let css = await (async () => {
577+
// Input file has been provided
578+
if (input) {
579+
fs.readFileSync(path.resolve(input), 'utf8')
580+
}
581+
582+
// Piping in data, let's drain the stdin
583+
if (!process.stdin.isTTY) {
584+
return await drainStdin()
585+
}
586+
587+
// No input file provided, fallback to default atrules
588+
return '@tailwind base; @tailwind components; @tailwind utilities'
589+
})()
590+
564591
return processCSS(css)
565592
}
566593

@@ -694,9 +721,21 @@ async function build() {
694721
})
695722
}
696723

697-
let css = input
698-
? fs.readFileSync(path.resolve(input), 'utf8')
699-
: '@tailwind base; @tailwind components; @tailwind utilities'
724+
let css = await (async () => {
725+
// Input file has been provided
726+
if (input) {
727+
fs.readFileSync(path.resolve(input), 'utf8')
728+
}
729+
730+
// Piping in data, let's drain the stdin
731+
if (!process.stdin.isTTY) {
732+
return await drainStdin()
733+
}
734+
735+
// No input file provided, fallback to default atrules
736+
return '@tailwind base; @tailwind components; @tailwind utilities'
737+
})()
738+
700739
let result = await processCSS(css)
701740
env.DEBUG && console.timeEnd('Finished in')
702741
return result

0 commit comments

Comments
 (0)