const {spawn} = require('child_process')
const exec = async function exec(cmd, args = []) {
const child = spawn(cmd, args, {shell: true})
redirectOutputFor(child)
await waitFor(child)
}
const redirectOutputFor = (child) => {
const printStdout = (data) => {
process.stdout.write(data.toString())
}
const printStderr = (data) => {
process.stderr.write(data.toString())
}
child.stdout.on('data', printStdout)
child.stderr.on('data', printStderr)
child.once('close', () => {
child.stdout.off('data', printStdout)
child.stderr.off('data', printStderr)
})
}
const waitFor = async function (child) {
return new Promise((resolve) => {
child.once('close', () => resolve())
})
}
const execSync = require('child_process').execSync
const sha512 = (filename) => {
const output = execSync(`sha512sum ${filename} | cut -f1 | xxd -r -p | base64`)
//console.log(output)
let sha512 = output.toString().split('\n').join('').trim()
//sha512 = sha512.substring(0, sha512.length - 1)
//console.log(sha512)
return sha512
}
module.exports.sha512 = sha512
module.exports.exec = exec