mirror of
https://github.com/hcengineering/platform.git
synced 2024-12-23 19:44:59 +03:00
9e183faf6b
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
91 lines
2.3 KiB
JavaScript
Executable File
91 lines
2.3 KiB
JavaScript
Executable File
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)
|
|
})
|
|
|