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(); } }