2016-01-27 21:23:17 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
|
|
* as represented by the Administrator of the National Aeronautics and Space
|
|
|
|
* Administration. All rights reserved.
|
|
|
|
*
|
|
|
|
* Open MCT Web is 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.
|
|
|
|
*
|
|
|
|
* Open MCT Web includes source code licensed under additional open source
|
|
|
|
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
|
|
|
* this source code distribution or the Licensing information page available
|
|
|
|
* at runtime from the About dialog for additional information.
|
|
|
|
*****************************************************************************/
|
|
|
|
|
2016-01-27 22:30:07 +00:00
|
|
|
/*global require,__dirname*/
|
2016-01-27 21:23:17 +00:00
|
|
|
var gulp = require('gulp'),
|
|
|
|
requirejsOptimize = require('gulp-requirejs-optimize'),
|
|
|
|
sourcemaps = require('gulp-sourcemaps'),
|
2016-02-23 02:02:16 +00:00
|
|
|
rename = require('gulp-rename'),
|
|
|
|
sass = require('gulp-sass'),
|
2016-02-23 02:28:45 +00:00
|
|
|
bourbon = require('node-bourbon'),
|
2016-01-28 21:44:18 +00:00
|
|
|
jshint = require('gulp-jshint'),
|
2016-01-28 22:33:57 +00:00
|
|
|
jscs = require('gulp-jscs'),
|
2016-01-29 01:08:02 +00:00
|
|
|
replace = require('gulp-replace-task'),
|
2016-01-27 22:30:07 +00:00
|
|
|
karma = require('karma'),
|
|
|
|
path = require('path'),
|
2016-01-30 00:52:13 +00:00
|
|
|
fs = require('fs'),
|
2016-01-29 01:16:44 +00:00
|
|
|
git = require('git-rev-sync'),
|
|
|
|
moment = require('moment'),
|
2016-03-04 20:01:11 +00:00
|
|
|
merge = require('merge-stream'),
|
2016-01-29 01:16:44 +00:00
|
|
|
project = require('./package.json'),
|
2016-03-04 20:01:11 +00:00
|
|
|
_ = require('lodash'),
|
2016-01-27 21:23:17 +00:00
|
|
|
paths = {
|
|
|
|
main: 'main.js',
|
2016-01-28 18:36:01 +00:00
|
|
|
dist: 'dist',
|
|
|
|
assets: 'dist/assets',
|
2016-02-23 02:02:16 +00:00
|
|
|
scss: ['./platform/**/*.scss', './example/**/*.scss'],
|
2016-01-28 23:06:07 +00:00
|
|
|
scripts: [ 'main.js', 'platform/**/*.js', 'src/**/*.js' ],
|
2016-03-04 19:52:46 +00:00
|
|
|
specs: [ 'platform/**/*Spec.js', 'src/**/*Spec.js' ],
|
2016-01-28 23:06:07 +00:00
|
|
|
static: [
|
|
|
|
'index.html',
|
2016-01-28 23:23:17 +00:00
|
|
|
'platform/**/*',
|
|
|
|
'example/**/*',
|
2016-01-28 23:06:07 +00:00
|
|
|
'bower_components/**/*'
|
|
|
|
]
|
2016-01-27 21:23:17 +00:00
|
|
|
},
|
|
|
|
options = {
|
|
|
|
requirejsOptimize: {
|
2016-01-28 18:36:01 +00:00
|
|
|
name: paths.main.replace(/\.js$/, ''),
|
2016-01-28 23:23:37 +00:00
|
|
|
mainConfigFile: paths.main,
|
|
|
|
wrapShim: true
|
2016-01-27 22:30:07 +00:00
|
|
|
},
|
|
|
|
karma: {
|
|
|
|
configFile: path.resolve(__dirname, 'karma.conf.js'),
|
|
|
|
singleRun: true
|
2016-01-28 18:36:01 +00:00
|
|
|
},
|
2016-02-23 02:02:16 +00:00
|
|
|
sass: {
|
2016-03-10 01:22:41 +00:00
|
|
|
includePaths: bourbon.includePaths,
|
|
|
|
sourceComments: true
|
2016-01-29 01:08:02 +00:00
|
|
|
},
|
|
|
|
replace: {
|
|
|
|
variables: {
|
2016-01-29 01:16:44 +00:00
|
|
|
version: project.version,
|
|
|
|
timestamp: moment.utc(Date.now()).format(),
|
2016-01-30 00:52:13 +00:00
|
|
|
revision: fs.existsSync('.git') ? git.long() : 'Unknown',
|
|
|
|
branch: fs.existsSync('.git') ? git.branch() : 'Unknown'
|
2016-01-29 01:08:02 +00:00
|
|
|
}
|
2016-01-27 21:23:17 +00:00
|
|
|
}
|
2016-02-22 20:45:41 +00:00
|
|
|
};
|
2016-01-27 21:23:17 +00:00
|
|
|
|
|
|
|
gulp.task('scripts', function () {
|
2016-01-27 22:30:40 +00:00
|
|
|
return gulp.src(paths.main)
|
|
|
|
.pipe(sourcemaps.init())
|
|
|
|
.pipe(requirejsOptimize(options.requirejsOptimize))
|
|
|
|
.pipe(sourcemaps.write('.'))
|
2016-01-29 01:08:02 +00:00
|
|
|
.pipe(replace(options.replace))
|
2016-02-23 03:07:36 +00:00
|
|
|
.pipe(gulp.dest(paths.dist));
|
2016-01-27 22:30:07 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('test', function (done) {
|
|
|
|
new karma.Server(options.karma, done).start();
|
|
|
|
});
|
2016-01-28 18:36:01 +00:00
|
|
|
|
|
|
|
gulp.task('stylesheets', function () {
|
2016-02-23 02:02:16 +00:00
|
|
|
return gulp.src(paths.scss, {base: '.'})
|
2016-02-23 02:57:05 +00:00
|
|
|
.pipe(sourcemaps.init())
|
2016-02-23 02:29:26 +00:00
|
|
|
.pipe(sass(options.sass).on('error', sass.logError))
|
2016-02-23 02:02:16 +00:00
|
|
|
.pipe(rename(function (file) {
|
2016-04-12 20:02:48 +00:00
|
|
|
file.dirname =
|
|
|
|
file.dirname.replace(path.sep + 'sass', path.sep + 'css');
|
2016-02-23 02:02:16 +00:00
|
|
|
return file;
|
|
|
|
}))
|
2016-02-23 02:57:05 +00:00
|
|
|
.pipe(sourcemaps.write('.'))
|
2016-02-23 02:02:16 +00:00
|
|
|
.pipe(gulp.dest(__dirname));
|
2016-01-28 18:36:01 +00:00
|
|
|
});
|
2016-01-28 21:44:18 +00:00
|
|
|
|
|
|
|
gulp.task('lint', function () {
|
2016-03-04 19:52:46 +00:00
|
|
|
var nonspecs = paths.specs.map(function (glob) {
|
2016-03-04 20:01:11 +00:00
|
|
|
return "!" + glob;
|
|
|
|
}),
|
|
|
|
scriptLint = gulp.src(paths.scripts.concat(nonspecs))
|
2016-04-08 23:37:18 +00:00
|
|
|
.pipe(jshint()),
|
2016-03-04 20:01:11 +00:00
|
|
|
specLint = gulp.src(paths.specs)
|
2016-04-08 23:37:18 +00:00
|
|
|
.pipe(jshint({ jasmine: true }));
|
2016-03-04 20:01:11 +00:00
|
|
|
|
|
|
|
return merge(scriptLint, specLint)
|
2016-01-28 21:44:18 +00:00
|
|
|
.pipe(jshint.reporter('default'))
|
|
|
|
.pipe(jshint.reporter('fail'));
|
|
|
|
});
|
2016-01-28 22:33:57 +00:00
|
|
|
|
2016-01-28 22:54:30 +00:00
|
|
|
gulp.task('checkstyle', function () {
|
2016-01-28 22:33:57 +00:00
|
|
|
return gulp.src(paths.scripts)
|
|
|
|
.pipe(jscs())
|
|
|
|
.pipe(jscs.reporter())
|
|
|
|
.pipe(jscs.reporter('fail'));
|
|
|
|
});
|
2016-01-28 22:39:14 +00:00
|
|
|
|
|
|
|
gulp.task('fixstyle', function () {
|
|
|
|
return gulp.src(paths.scripts, { base: '.' })
|
|
|
|
.pipe(jscs({ fix: true }))
|
|
|
|
.pipe(gulp.dest('.'));
|
|
|
|
});
|
2016-01-28 23:06:07 +00:00
|
|
|
|
2016-02-19 19:18:54 +00:00
|
|
|
gulp.task('static', ['stylesheets'], function () {
|
2016-01-28 23:06:07 +00:00
|
|
|
return gulp.src(paths.static, { base: '.' })
|
|
|
|
.pipe(gulp.dest(paths.dist));
|
|
|
|
});
|
|
|
|
|
2016-02-19 19:18:54 +00:00
|
|
|
gulp.task('watch', function () {
|
|
|
|
gulp.watch(paths.scss, ['stylesheets']);
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task('serve', function () {
|
|
|
|
console.log('Running development server with all defaults');
|
|
|
|
var app = require('./app.js');
|
|
|
|
});
|
|
|
|
|
2016-02-23 02:30:07 +00:00
|
|
|
gulp.task('develop', ['serve', 'stylesheets', 'watch']);
|
2016-02-19 19:18:54 +00:00
|
|
|
|
2016-01-29 19:54:18 +00:00
|
|
|
gulp.task('install', [ 'static', 'scripts' ]);
|
2016-01-29 18:15:34 +00:00
|
|
|
|
2016-05-12 22:32:38 +00:00
|
|
|
gulp.task('verify', [ 'lint', 'test', 'checkstyle' ]);
|
2016-01-29 19:54:18 +00:00
|
|
|
|
|
|
|
gulp.task('build', [ 'verify', 'install' ]);
|