 fs = require 'fs'
 path = require 'path'
 request = require 'request'
-Promise = require 'bluebird'
 childProcess = require 'child_process'
 
 executeTests = ({cmd, args}, grunt, done) ->

  testProc.on 'error', (err) -> grunt.log.error("Process error: #{err}")

  testProc.on 'exit', (exitCode, signal) ->
    if exitCode is 0 then done()
    else notifyOfTestError(testOutput, grunt).then -> done(false)

notifyOfTestError = (testOutput, grunt) -> new Promise (resolve, reject) ->
  if (process.env("TEST_ERROR_HOOK_URL") ? "").length > 0
    testOutput = grunt.log.uncolor(testOutput)
    request.post
      url: process.env("TEST_ERROR_HOOK_URL")
      json:
        username: "Edgehill Builds"
        text: "Aghhh somebody broke the build. ```#{testOutput}```"
    , resolve
  else resolve()

module.exports = (grunt) ->

  grunt.registerTask 'run-spectron-specs', 'Run spectron specs', ->
    shellAppDir = grunt.config.get('nylasGruntConfig.shellAppDir')

          "APP_PATH=#{executablePath}"
          "APP_ARGS="
        ]
        executeTests {cmd: npmPath, args: appArgs}, grunt, (succeeded) ->
          process.chdir('..')
          done(succeeded)
