mattermost-desktop/gulpfile.js

130 lines
3.6 KiB
JavaScript
Raw Normal View History

2015-10-23 07:56:53 -07:00
'use strict';
var gulp = require('gulp');
var prettify = require('gulp-jsbeautifier');
var diff = require('gulp-diff');
var electron = require('electron-connect').server.create({
2016-01-30 07:50:43 -08:00
path: './dist'
});
2016-09-19 06:32:59 -07:00
const fs = require('fs');
2016-10-11 08:02:05 -07:00
const path = require('path');
const spawn = require('child_process').spawn;
2015-10-23 07:56:53 -07:00
const distPackageAuthor = 'Mattermost, Inc.';
2016-05-16 07:01:26 -07:00
var sources = ['**/*.js', '**/*.json', '**/*.css', '**/*.html', '!**/node_modules/**', '!dist/**', '!release/**', '!**/test_config.json'];
2015-10-23 07:56:53 -07:00
2016-09-25 07:14:01 -07:00
gulp.task('prettify', ['prettify:sources']);
gulp.task('prettify:verify', ['prettify:sources:verify']);
2016-02-15 06:58:46 -08:00
2016-09-25 07:14:01 -07:00
var prettifyOptions = {
2016-02-15 06:58:46 -08:00
html: {
indent_size: 2,
end_with_newline: true
2016-02-15 06:58:46 -08:00
},
css: {
indent_size: 2,
end_with_newline: true
2016-02-15 06:58:46 -08:00
},
js: {
indent_size: 2,
2016-09-25 07:14:01 -07:00
brace_style: 'end-expand',
end_with_newline: true
2016-02-15 06:58:46 -08:00
}
};
2015-12-19 07:39:51 -08:00
2016-09-25 07:14:01 -07:00
gulp.task('prettify:sources', ['sync-meta'], () => {
return gulp.src(sources).
pipe(prettify(prettifyOptions)).
pipe(prettify.reporter()).
pipe(diff()).
pipe(diff.reporter({
quiet: true,
fail: false
2016-09-25 07:14:01 -07:00
})).
pipe(gulp.dest('.'));
2015-10-23 07:56:53 -07:00
});
2015-10-24 01:44:47 -07:00
2016-09-25 07:14:01 -07:00
gulp.task('prettify:sources:verify', () => {
return gulp.src(sources).
pipe(prettify(prettifyOptions)).
pipe(prettify.reporter()).
pipe(diff()).
pipe(diff.reporter({
quiet: true,
fail: true
}));
2016-02-15 06:58:46 -08:00
});
2016-09-25 07:14:01 -07:00
gulp.task('build', ['sync-meta', 'copy'], (cb) => {
const appPackageJson = require('./src/package.json');
const distPackageJson = Object.assign({}, appPackageJson, {
author: {
name: distPackageAuthor,
email: 'noreply'
}
});
fs.writeFile('./dist/package.json', JSON.stringify(distPackageJson, null, ' '), cb);
2016-01-30 07:50:43 -08:00
});
gulp.task('copy', ['copy:assets', 'copy:html/css', 'copy:modules']);
2016-01-30 07:50:43 -08:00
gulp.task('copy:assets', () => {
return gulp.src('src/assets/**').
pipe(gulp.dest('dist/assets'));
2016-01-30 07:50:43 -08:00
});
2016-09-25 07:14:01 -07:00
gulp.task('copy:html/css', () => {
return gulp.src(['src/browser/**/*.html', 'src/browser/**/*.css']).
pipe(gulp.dest('dist/browser'));
2016-01-30 07:50:43 -08:00
});
2016-09-25 07:14:01 -07:00
gulp.task('copy:modules', () => {
return gulp.src(['src/node_modules/bootstrap/dist/**']).
pipe(gulp.dest('dist/browser/modules/bootstrap'));
});
2016-10-11 08:02:05 -07:00
function spawnWebpack(config, cb) {
2016-09-25 07:14:01 -07:00
const ext = process.platform === 'win32' ? '.cmd' : '';
2016-10-11 08:02:05 -07:00
spawn(path.resolve(`./node_modules/.bin/webpack${ext}`), ['--config', config], {
stdio: 'inherit'
}).on('exit', (code) => {
cb(code);
});
}
gulp.task('webpack:main', (cb) => {
spawnWebpack('webpack.config.main.js', cb);
});
gulp.task('webpack:renderer', (cb) => {
spawnWebpack('webpack.config.renderer.js', cb);
});
2016-09-25 07:14:01 -07:00
gulp.task('watch', ['build', 'webpack:main', 'webpack:renderer'], () => {
var options = ['--livereload'];
electron.start(options);
2016-02-09 03:59:52 -08:00
gulp.watch(['src/main.js', 'src/main/**/*.js', 'src/common/**/*.js'], ['webpack:main']);
2016-10-11 08:02:05 -07:00
gulp.watch(['src/browser/**/*.js', 'src/browser/**/*.jsx'], ['webpack:renderer']);
gulp.watch(['src/browser/**/*.css', 'src/browser/**/*.html', 'src/assets/**/*.png'], ['copy']);
2016-02-09 03:59:52 -08:00
gulp.watch(['dist/main.js', 'dist/assets/**'], () => {
electron.restart(options);
});
2016-02-09 03:59:52 -08:00
gulp.watch(['dist/browser/*.js'], electron.reload);
});
2016-09-25 07:14:01 -07:00
gulp.task('sync-meta', () => {
var appPackageJson = require('./src/package.json');
var packageJson = require('./package.json');
appPackageJson.name = packageJson.name;
appPackageJson.productName = packageJson.productName;
appPackageJson.version = packageJson.version;
appPackageJson.description = packageJson.description;
appPackageJson.author = packageJson.author;
appPackageJson.license = packageJson.license;
fs.writeFileSync('./src/package.json', JSON.stringify(appPackageJson, null, ' ') + '\n');
});