128 lines
3.2 KiB
JavaScript
128 lines
3.2 KiB
JavaScript
/* 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 () {
|
|
// 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);
|
|
}
|
|
};
|
|
});
|