You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
3.2 KiB
127 lines
3.2 KiB
/* Copyright 2016 Mozilla Foundation |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
/* jshint node:true */ |
|
/* globals target */ |
|
|
|
'use strict'; |
|
|
|
var fs = require('fs'); |
|
var gulp = require('gulp'); |
|
var gutil = require('gulp-util'); |
|
var rimraf = require('rimraf'); |
|
var stream = require('stream'); |
|
|
|
var BUILD_DIR = 'build/'; |
|
var L10N_DIR = 'l10n/'; |
|
|
|
require('./make.js'); |
|
|
|
function createStringSource(filename, content) { |
|
var source = stream.Readable({ objectMode: true }); |
|
source._read = function () { |
|
this.push(new gutil.File({ |
|
cwd: '', |
|
base: '', |
|
path: filename, |
|
contents: new Buffer(content) |
|
})); |
|
this.push(null); |
|
}; |
|
return source; |
|
} |
|
|
|
gulp.task('default', function() { |
|
console.log('Available tasks:'); |
|
var tasks = Object.keys(gulp.tasks); |
|
tasks.sort(); |
|
tasks.forEach(function (taskName) { |
|
console.log(' ' + taskName); |
|
}); |
|
}); |
|
|
|
gulp.task('server', function () { |
|
console.log(); |
|
console.log('### Starting local server'); |
|
|
|
var WebServer = require('./test/webserver.js').WebServer; |
|
var server = new WebServer(); |
|
server.port = 8888; |
|
server.start(); |
|
}); |
|
|
|
gulp.task('clean', function(callback) { |
|
console.log(); |
|
console.log('### Cleaning up project builds'); |
|
|
|
rimraf(BUILD_DIR, callback); |
|
}); |
|
|
|
gulp.task('makefile', function () { |
|
var makefileContent = 'help:\n\tgulp\n\n'; |
|
var targetsNames = []; |
|
for (var i in target) { |
|
makefileContent += i + ':\n\tgulp ' + i + '\n\n'; |
|
targetsNames.push(i); |
|
} |
|
makefileContent += '.PHONY: ' + targetsNames.join(' ') + '\n'; |
|
return createStringSource('Makefile', makefileContent) |
|
.pipe(gulp.dest('.')); |
|
}); |
|
|
|
gulp.task('importl10n', function() { |
|
var locales = require('./external/importL10n/locales.js'); |
|
|
|
console.log(); |
|
console.log('### Importing translations from mozilla-aurora'); |
|
|
|
if (!fs.existsSync(L10N_DIR)) { |
|
fs.mkdirSync(L10N_DIR); |
|
} |
|
locales.downloadL10n(L10N_DIR); |
|
}); |
|
|
|
// Getting all shelljs registered tasks and register them with gulp |
|
var gulpContext = false; |
|
for (var taskName in global.target) { |
|
if (taskName in gulp.tasks) { |
|
continue; |
|
} |
|
|
|
var task = (function (shellJsTask) { |
|
return function () { |
|
gulpContext = true; |
|
try { |
|
shellJsTask.call(global.target); |
|
} finally { |
|
gulpContext = false; |
|
} |
|
}; |
|
})(global.target[taskName]); |
|
gulp.task(taskName, task); |
|
} |
|
|
|
Object.keys(gulp.tasks).forEach(function (taskName) { |
|
var oldTask = global.target[taskName] || function () { |
|
gulp.run(taskName); |
|
}; |
|
|
|
global.target[taskName] = function (args) { |
|
// The require('shelljs/make') import in make.js will try to execute tasks |
|
// listed in arguments, guarding with gulpContext |
|
if (gulpContext) { |
|
oldTask.call(global.target, args); |
|
} |
|
}; |
|
});
|
|
|