docs: function callEngineScripts(engines, project_dir) {
  
      return Q.all(
          engines.map(function(engine){
              // CB-5192; on Windows scriptSrc doesn't have file extension so we shouldn't check whether the script exists
              var scriptPath = engine.scriptSrc ? '"' + engine.scriptSrc + '"' : null;
              if(scriptPath && (isWindows || fs.existsSync(engine.scriptSrc)) ) {
  
                  var d = Q.defer();
                  if(!isWindows) { // not required on Windows
                      fs.chmodSync(engine.scriptSrc, '755');
                  }
                  child_process.exec(scriptPath, function(error, stdout, stderr) {
                      if (error) {
                          events.emit('warn', engine.name +' version check failed ('+ scriptPath +'), continuing anyways.');
                          engine.currentVersion = null;
                      } else {
                          engine.currentVersion = cleanVersionOutput(stdout, engine.name);
                          if (engine.currentVersion === '') {
                              events.emit('warn', engine.name +' version check returned nothing ('+ scriptPath +'), continuing anyways.');
                              engine.currentVersion = null;
                          }
                      }
  
                      d.resolve(engine);
                  });
                  return d.promise;
  
              } else {
  
                  if(engine.currentVersion) {
                      engine.currentVersion = cleanVersionOutput(engine.currentVersion, engine.name);
                  } else {
                      events.emit('warn', engine.name +' version not detected (lacks script '+ scriptPath +' ), continuing.');
                  }
  
                  return Q(engine);
              }
          })
      );
  }