hawtio-youtrack-incloud/gulpfile.js (121 lines of code) (raw):

let angularTemplatecache = require('gulp-angular-templatecache'); let argv = require('yargs').argv; let concat = require('gulp-concat'); let del = require('del'); let eventStream = require('event-stream'); let gulp = require('gulp'); let hawtio = require('@hawtio/node-backend'); let If = require('gulp-if'); let less = require('gulp-less'); let logger = require('js-logger'); let maven = require('maven'); let ngAnnotate = require('gulp-ng-annotate'); let path = require('path'); let rename = require("gulp-rename"); let replace = require("gulp-replace"); let sourcemaps = require('gulp-sourcemaps'); let typescript = require('gulp-typescript'); let packageJson = require('./package.json'); const config = { targetPath: argv.path || '/hawtio/jolokia', logLevel: argv.debug ? logger.DEBUG : logger.INFO, templates: ['app/src/**/*.html', 'app/src/**/*.md'], less: ['app/src/**/*.less', 'vendor/**/*.less', 'vendor/**/*.css'], templateModule: 'youtrack-incloud-templates', dist: argv.out || './src/main/webapp/plugin/', js: 'youtrack-incloud.js', dts: 'youtrack-incloud.d.ts', css: 'youtrack-incloud.css', sourceMap: argv.sourcemap, vendorJs: './vendor/**/*.js', vendorCss: './vendor/**/*.css', sourceMap: argv.sourcemap, srcImg: './app/src/img/**/*', distImg: './src/main/webapp/plugin/img', tempImg: './target/temp/img' }; const tsProject = typescript.createProject('tsconfig.json'); gulp.task('camel-model', function () { let mvn = maven.create({ cwd: 'vendor/apache-camel' }); mvn.execute('compile'); }); gulp.task('tsc', function () { var tsResult = tsProject.src() .pipe(If(config.sourceMap, sourcemaps.init())) .pipe(tsProject()); return eventStream.merge( tsResult.js .pipe(ngAnnotate()) .pipe(If(config.sourceMap, sourcemaps.write())) .pipe(gulp.dest('.')), tsResult.dts .pipe(rename(config.dts)) .pipe(gulp.dest(config.dist))); }); gulp.task('template', ['tsc'], function () { return gulp.src(config.templates) .pipe(angularTemplatecache({ filename: 'templates.js', root: 'app/src/', standalone: true, module: config.templateModule, templateFooter: '}]); hawtioPluginLoader.addModule("' + config.templateModule + '");' })) .pipe(gulp.dest('.')); }); gulp.task('concat', ['template'], function () { return gulp.src([config.vendorJs, 'compiled.js', 'templates.js']) .pipe(concat(config.js)) .pipe(gulp.dest(config.dist)); }); gulp.task('clean', ['concat'], function () { del(['templates.js', 'compiled.js']); }); gulp.task('less', function () { let pluginsCss = gulp.src(config.less) .pipe(less({ paths: [ path.join(__dirname, 'plugins'), path.join(__dirname, 'node_modules') ] })); let vendorCss = gulp.src(config.vendorCss); return eventStream.merge(pluginsCss, vendorCss) .pipe(concat(config.css)) .pipe(gulp.dest(config.dist)); }); gulp.task('copy-images', function () { gulp.src(config.srcImg) .pipe(gulp.dest(config.distImg)) .pipe(gulp.dest(config.tempImg)); return gulp.src('node_modules/@hawtio/core/dist/img/*') .pipe(gulp.dest(config.tempImg)); }); gulp.task('watch-less', function () { gulp.watch(config.less, ['less']); }); gulp.task('watch', ['build', 'watch-less'], function () { gulp.watch(['index.html', config.dist + config.js], ['reload']); const tsconfig = require('./tsconfig.json'); gulp.watch([...tsconfig.include, ...(tsconfig.exclude || []).map(e => `!${e}`), config.templates], ['tsc', 'template', 'concat', 'clean']); }); gulp.task('reload', function () { gulp.src('.') .pipe(hawtio.reload()); }); gulp.task('version', function () { gulp.src(config.dist + config.js) .pipe(replace('PACKAGE_VERSION_PLACEHOLDER', packageJson.version)) .pipe(gulp.dest(config.dist)); }); gulp.task('build', ['tsc', 'less', 'template', 'concat', 'clean', 'copy-images']); gulp.task('default', ['connect']); gulp.task('camel-test', ['default'], function () { let mvn = maven.create({ cwd: 'test' }); mvn.execute('hawtio:spring'); });