// This file exports a function that has the same interface as
// `spawnSync`, but it throws if there's an error while executing
// the supplied command or if the exit code is not 0. This is similar to what
// `execSync` does, but we want to use `spawnSync` because it provides automatic
// escaping for the supplied arguments.

const childProcess = require('child_process')

module.exports = function () {
  const result = childProcess.spawnSync.apply(childProcess, arguments)
  if (result.error) {
    throw result.error
  } else if (result.status !== 0) {
    if (result.stdout) console.error(result.stdout.toString())
    if (result.stderr) console.error(result.stderr.toString())
    throw new Error(`Command ${result.args.join(' ')} exited with code "${result.status}"`)
  } else {
    return result
  }
}
