blob: 135ee9f02af81d6a8b75039631a864afe73fd89b [file] [log] [blame]
import gulp from 'gulp';
import browserSync from 'browser-sync';
import fs from 'fs';
import webserver from 'gulp-webserver';
import proxy from 'http-proxy-middleware';
let external_apps;
let bs = null;
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 = () => {
bs = browserSync.init({
proxy: {
target: 'http://localhost:8181',
ws: true,
middleware: [
proxy(['**/*.js', '!/onos/ui/onos.js'], { target: 'http://localhost:8189' }),
proxy(['**/*.css'], { 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();
export function reload() {
if (bs) {
bs.reload();
}
}