NEW sauce-tunnel grunt task

This commit is contained in:
Thomas Aylott
2013-11-13 16:22:10 -05:00
parent 5873ee7691
commit 0401a0a67c
3 changed files with 41 additions and 1 deletions
+3
View File
@@ -6,6 +6,7 @@ var browserifyTask = require('./grunt/tasks/browserify');
var populistTask = require('./grunt/tasks/populist');
var webdriverPhantomJSTask = require('./grunt/tasks/webdriver-phantomjs');
var webdriverJasmineTasks = require('./grunt/tasks/webdriver-jasmine');
var sauceTunnelTask = require('./grunt/tasks/sauce-tunnel');
var npmTask = require('./grunt/tasks/npm');
var releaseTasks = require('./grunt/tasks/release');
@@ -46,6 +47,8 @@ module.exports = function(grunt) {
grunt.registerMultiTask('populist', populistTask);
grunt.registerTask('sauce-tunnel', sauceTunnelTask);
grunt.registerMultiTask('webdriver-jasmine', webdriverJasmineTasks);
grunt.registerMultiTask('npm', npmTask);
+36
View File
@@ -0,0 +1,36 @@
var grunt = require('grunt');
var SauceTunnel = require('sauce-tunnel');
module.exports = function(){
var task = this;
var config = task.data;
var shouldStayAliveForever = task.flags.keepalive;
var SAUCE_ACCESS_KEY = process.env.SAUCE_ACCESS_KEY;
if (!SAUCE_ACCESS_KEY) grunt.fatal('Requires the environment variable SAUCE_ACCESS_KEY to be set');
var SAUCE_USERNAME = process.env.SAUCE_USERNAME;
if (!SAUCE_USERNAME) grunt.fatal('Requires the environment variable SAUCE_USERNAME to be set');
var taskCompletedSuccessfully = task.async();
var stunnel = new SauceTunnel(SAUCE_USERNAME, SAUCE_ACCESS_KEY, /*identifier*/null, /*tunneled*/true, /*tunnelTimeout*/10e3);
process.on('exit', stunnel.stop.bind(stunnel, function(){}));
stunnel.on('log:error', grunt.log.error.bind(grunt.log));
stunnel.on('log:writeln', grunt.log.writeln.bind(grunt.log));
stunnel.on('verbose:ok', grunt.verbose.ok.bind(grunt.verbose));
stunnel.on('verbose:error', grunt.verbose.error.bind(grunt.verbose));
stunnel.on('verbose:debug', grunt.verbose.debug.bind(grunt.verbose));
stunnel.on('verbose:writeln', grunt.verbose.writeln.bind(grunt.verbose));
stunnel.openTunnel(function(isOpen){
if (shouldStayAliveForever && isOpen){
grunt.verbose.writeln('Keeping the sauce-tunnel open forever because you used the keepalive flag `' + task.name + '`');
return;
}
grunt.verbose.writeln('To keep the sauce-tunnel open forever, use the grunt task `' + task.name + ':keepalive`');
taskCompletedSuccessfully(isOpen);
});
};
+2 -1
View File
@@ -60,7 +60,8 @@
"jasmine-tapreporter": "~0.2.2",
"grunt-contrib-connect": "~0.5.0",
"es5-shim": "~2.1.0",
"wd": "~0.2.2"
"wd": "~0.2.2",
"sauce-tunnel": "~1.1.0"
},
"engines": {
"node": ">=0.10.0"