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