GUI: Added ESLint to gulp tasks
GUI: Linted files
Fixed an error in the build script
JIRA-TASKS: ONOS-6522, ONOS-6521
Change-Id: Ie72abfe6cbe21c8946f219be6193344b67ec6dd1
diff --git a/tools/gui/gulp-tasks/bundles/bundle-js/index.js b/tools/gui/gulp-tasks/bundles/bundle-js/index.js
index 212034a..7b05051 100644
--- a/tools/gui/gulp-tasks/bundles/bundle-js/index.js
+++ b/tools/gui/gulp-tasks/bundles/bundle-js/index.js
@@ -45,8 +45,13 @@
}
const tasks = function () {
- gulp.task('bundle-vendor', () => bundle(vendor, 'vendor.js'));
+ // gulp.task('bundle-vendor', () => bundle(vendor, 'vendor.js'));
gulp.task('bundle-js', () => bundle(bundleFiles, 'onos.js'));
+ gulp.task('watch-js', () => {
+ gulp.watch([GUI_BASE + '**/*.js', `!${GUI_BASE}/dist/**/*`], ['bundle-js']);
+ }).on('change', (event) => {
+ console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
+ });
};
export default tasks();
\ No newline at end of file
diff --git a/tools/gui/gulp-tasks/dev-server/index.js b/tools/gui/gulp-tasks/dev-server/index.js
new file mode 100644
index 0000000..f0dddf7
--- /dev/null
+++ b/tools/gui/gulp-tasks/dev-server/index.js
@@ -0,0 +1,69 @@
+import gulp from 'gulp';
+import browserSync from 'browser-sync';
+import fs from 'fs';
+import webserver from 'gulp-webserver';
+import proxy from 'http-proxy-middleware';
+
+console.log(proxy)
+
+let external_apps;
+
+const files = ['../../web/gui/src/main/webapp/**/*.js'];
+const defaultViews = fs.readdirSync('../../web/gui/src/main/webapp/app/view/');
+const viewNameMatcher = new RegExp(/\/onos\/ui\/app\/view\/(.+)\/.+\.(?:js|css|html)/);
+
+if (process.env.ONOS_EXTERNAL_APP_DIRS) {
+ let external_apps = process.env.ONOS_EXTERNAL_APP_DIRS.replace(/\s/,'').split(',');
+
+ external_apps = external_apps.reduce(function (dict, app) {
+ const pieces = app.split(':');
+ const appName = pieces[0];
+ const appPath = pieces[1];
+ dict[appName] = appPath;
+ return dict;
+ }, {});
+}
+
+const checkExternalApp = (url) => {
+ if(external_apps){
+ for(let i = 0; i < Object.keys(external_apps).length; i++){
+ const key = Object.keys(external_apps)[i];
+ if (url.indexOf(key) !== -1) {
+ return key;
+ }
+ }
+ }
+ return false;
+};
+
+const serve = () => {
+ browserSync.init({
+ proxy: {
+ target: 'http://localhost:8181',
+ ws: true,
+ middleware: [
+ proxy(['**/*.js', '!/onos/ui/onos.js'], { target: 'http://localhost:8189' }),
+ proxy('**/*.js.map', {
+ target: 'http://localhost:8189',
+ changeOrigin: true,
+ logLevel: 'debug'
+ })
+ ]
+ }
+ });
+};
+
+const tasks = () => {
+ gulp.task('serve', ['bundle-js', 'proxy-server'], serve);
+ gulp.task('proxy-server', function() {
+ gulp.src('../../web/gui/src/main/webapp')
+ .pipe(webserver({
+ port: 8189,
+ path: '/onos/ui/'
+ }));
+ });
+};
+
+export default tasks();
+
+
diff --git a/tools/gui/gulp-tasks/index.js b/tools/gui/gulp-tasks/index.js
index 3bef084..2f2019b 100644
--- a/tools/gui/gulp-tasks/index.js
+++ b/tools/gui/gulp-tasks/index.js
@@ -1,2 +1,5 @@
export { default as BundleJS } from './bundles/bundle-js';
-export { default as BundleCSS } from './bundles/bundle-css';
\ No newline at end of file
+export { default as BundleCSS } from './bundles/bundle-css';
+export { default as Lint } from './lint';
+export { default as DevServer } from './dev-server';
+// export { default as Tests } from './unit-tests';
\ No newline at end of file
diff --git a/tools/gui/gulp-tasks/lint/esconfig.json b/tools/gui/gulp-tasks/lint/esconfig.json
new file mode 100644
index 0000000..7ce1a78
--- /dev/null
+++ b/tools/gui/gulp-tasks/lint/esconfig.json
@@ -0,0 +1,27 @@
+{
+ "extends": "google",
+ "globals": {
+ "angular": true,
+ "d3": true,
+ "_": true
+ },
+ "rules": {
+ "prefer-spread": 0,
+ "prefer-rest-params": 0,
+ "no-var": 0,
+ "comma-dangle": 1,
+ "brace-style": 0,
+ "no-void": 0,
+ "require-jsdoc": 0,
+ "padded-blocks": 0,
+ "quote-props": 0,
+ "no-warning-comments": 0,
+ "object-curly-spacing": ["error", "always"],
+ "indent": 0,
+ "one-var": 0,
+ "block-spacing": ["error", "always"],
+ "space-before-function-paren": ["error", { "anonymous": "always", "named": "never" }],
+ "max-len": ["error", 120],
+ "no-invalid-this": 0
+ }
+}
diff --git a/tools/gui/gulp-tasks/lint/index.js b/tools/gui/gulp-tasks/lint/index.js
new file mode 100644
index 0000000..8dabc49
--- /dev/null
+++ b/tools/gui/gulp-tasks/lint/index.js
@@ -0,0 +1,33 @@
+import gulp from 'gulp';
+import eslint from 'gulp-eslint';
+import gulpIf from 'gulp-if';
+import path from 'path';
+
+const files = [
+ '../../web/gui/src/main/webapp/app/**/*.js'
+];
+
+function isFixed(file) {
+ // Has ESLint fixed the file contents?
+ return file.eslint != null && file.eslint.fixed;
+}
+
+const lint = () => {
+ return gulp.src(files)
+ .pipe(eslint({
+ configFile: path.join(__dirname, 'esconfig.json'),
+ useEslintrc: false,
+ // Automatically fix trivial issues
+ fix: true,
+ }))
+ .pipe(eslint.format())
+ .pipe(gulpIf(isFixed,
+ gulp.dest('../../web/gui/src/main/webapp/app')
+ ));
+};
+
+const tasks = () => {
+ gulp.task('lint', () => lint());
+};
+
+export default tasks();
\ No newline at end of file