platform/packages/platform-rig/bin/do-svelte-check.js

91 lines
2.3 KiB
JavaScript
Raw Normal View History

const { join, dirname } = require("path")
const { readFileSync, existsSync, mkdirSync, createWriteStream } = require('fs')
const { spawn } = require('child_process')
async function execProcess(cmd, logFile, args, useConsole) {
let compileRoot = dirname(dirname(process.argv[1]))
console.log("Svelte check...\n", process.cwd(), args)
if (!existsSync(join(process.cwd(), '.svelte-check'))) {
mkdirSync(join(process.cwd(), '.svelte-check'))
}
const compileOut = spawn(cmd, args)
const stdoutFilePath = `.svelte-check/${logFile}.log`
const stderrFilePath = `.svelte-check/${logFile}-err.log`
const outPromise = new Promise((resolve) => {
if (compileOut.stdout != null) {
let outPipe = createWriteStream(stdoutFilePath)
compileOut.stdout.pipe(outPipe)
compileOut.stdout.on('end', function (data) {
outPipe.close()
if( useConsole ) {
console.log(readFileSync(stdoutFilePath).toString())
console.log(readFileSync(stderrFilePath).toString())
}
resolve()
})
} else {
resolve()
}
})
const errPromise = new Promise((resolve) => {
if (compileOut.stderr != null) {
let outPipe = createWriteStream(stderrFilePath)
compileOut.stderr.pipe(outPipe)
compileOut.stderr.on('end', function (data) {
outPipe.close()
resolve()
})
} else {
resolve()
}
})
let editCode = 0
const closePromise = new Promise(resolve => {
compileOut.on('close', (code) => {
editCode = code
resolve()
})
compileOut.on('error', (err) => {
console.error(err)
resolve()
})
})
await Promise.all([outPromise, errPromise, closePromise])
if (editCode !== 0) {
const data = readFileSync(stdoutFilePath)
const errData = readFileSync(stderrFilePath)
console.error('\n' + data.toString() + '\n' + errData.toString())
process.exit(editCode)
}
}
let args = [] // process.argv.slice(2)
let useConsole = false
for(const a of process.argv.slice(2)) {
if( a === '--console') {
useConsole = true
} else {
args.push(a)
}
}
let st = Date.now()
execProcess(
'svelte-check',
'svelte-check', [
'--output', 'human',
...args
], useConsole)
.then(() => {
console.log("Svelte check time: ", Date.now() - st)
})