| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- 'use strict'
 
- var fs = require('graceful-fs')
 
- var child_process = require('child_process')
 
- if (!String.prototype.startsWith) {
 
-   String.prototype.startsWith = function(search, pos) {
 
-     return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search
 
-   }
 
- }
 
- function processExecSync(file, args, options) {
 
-   var child, error, timeout, tmpdir, command, quote
 
-   command = makeCommand(file, args)
 
-   /*
 
-     this function emulates child_process.execSync for legacy node <= 0.10.x
 
-     derived from https://github.com/gvarsanyi/sync-exec/blob/master/js/sync-exec.js
 
-   */
 
-   options = options || {}
 
-   // init timeout
 
-   timeout = Date.now() + options.timeout
 
-   // init tmpdir
 
-   var os_temp_base = '/tmp'
 
-   var os = determine_os()
 
-   os_temp_base = '/tmp'
 
-   if (process.env.TMP) {
 
-     os_temp_base = process.env.TMP
 
-   }
 
-   if (os_temp_base[os_temp_base.length - 1] !== '/') {
 
-     os_temp_base += '/'
 
-   }
 
-   tmpdir = os_temp_base + 'processExecSync.' + Date.now() + Math.random()
 
-   fs.mkdirSync(tmpdir)
 
-   // init command
 
-   if (os === 'linux') {
 
-     command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir +
 
-       '/stderr); echo $? > ' + tmpdir + '/status'
 
-   } else {
 
-     command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir +
 
-       '/stderr) | echo %errorlevel% > ' + tmpdir + '/status | exit'
 
-   }
 
-   // init child
 
-   child = child_process.exec(command, options)
 
-   var maxTry = 100000 // increases the test time by 6 seconds on win-2016-node-0.10
 
-   var tryCount = 0
 
-   while (tryCount < maxTry) {
 
-     try {
 
-       var x = fs.readFileSync(tmpdir + '/status')
 
-       if (x.toString() === '0') {
 
-         break
 
-       }
 
-     } catch (ignore) {}
 
-     tryCount++
 
-     if (Date.now() > timeout) {
 
-       error = child
 
-       break
 
-     }
 
-   }
 
-   ['stdout', 'stderr', 'status'].forEach(function (file) {
 
-     child[file] = fs.readFileSync(tmpdir + '/' + file, options.encoding)
 
-     setTimeout(unlinkFile, 500, tmpdir + '/' + file)
 
-   })
 
-   child.status = Number(child.status)
 
-   if (child.status !== 0) {
 
-     error = child
 
-   }
 
-   try {
 
-     fs.rmdirSync(tmpdir)
 
-   } catch (ignore) {}
 
-   if (error) {
 
-     throw error
 
-   }
 
-   return child.stdout
 
- }
 
- function makeCommand(file, args) {
 
-   var command, quote
 
-   command = file
 
-   if (args.length > 0) {
 
-     for(var i in args) {
 
-       command = command + ' '
 
-       if (args[i][0] === '-') {
 
-         command = command + args[i]
 
-       } else {
 
-         if (!quote) {
 
-           command = command + '\"'
 
-           quote = true
 
-         }
 
-         command = command + args[i]
 
-         if (quote) {
 
-           if (args.length === (parseInt(i) + 1)) {
 
-             command = command + '\"'
 
-           }
 
-         }
 
-       }
 
-     }
 
-   }
 
-   return command
 
- }
 
- function determine_os() {
 
-   var os = ''
 
-   var tmpVar = ''
 
-   if (process.env.OSTYPE) {
 
-     tmpVar = process.env.OSTYPE
 
-   } else  if (process.env.OS) {
 
-     tmpVar = process.env.OS
 
-   } else {
 
-     //default is linux
 
-     tmpVar = 'linux'
 
-   }
 
-   if (tmpVar.startsWith('linux')) {
 
-     os = 'linux'
 
-   }
 
-   if (tmpVar.startsWith('win')) {
 
-     os = 'win'
 
-   }
 
-   return os
 
- }
 
- function unlinkFile(file) {
 
-   fs.unlinkSync(file)
 
- }
 
- module.exports = processExecSync
 
 
  |