mattermost-desktop/gulpfile.js

134 lines
3.5 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 babel = require('gulp-babel');
var changed = require('gulp-changed');
2015-12-19 07:39:51 -08:00
var esformatter = require('gulp-esformatter');
var del = require('del');
var electron = require('electron-connect').server.create({
path: './src'
});
2015-10-24 01:44:47 -07:00
var packager = require('electron-packager');
2015-10-23 07:56:53 -07:00
2015-12-19 06:47:57 -08:00
var sources = ['**/*.js', '**/*.css', '**/*.html', '!**/node_modules/**', '!**/build/**', '!release/**'];
var app_root = 'src';
2015-10-23 07:56:53 -07:00
2015-12-19 07:39:51 -08:00
gulp.task('prettify', ['prettify:sources', 'prettify:jsx']);
gulp.task('prettify:sources', ['sync-meta'], function() {
2015-12-19 02:43:57 -08:00
return gulp.src(sources)
2015-10-23 07:56:53 -07:00
.pipe(prettify({
html: {
indentSize: 2
},
css: {
indentSize: 2
},
js: {
indentSize: 2,
braceStyle: "end-expand"
}
}))
.pipe(gulp.dest('.'));
});
2015-10-24 01:44:47 -07:00
2015-12-19 07:39:51 -08:00
gulp.task('prettify:jsx', function() {
return gulp.src(app_root + '/**/*.jsx')
.pipe(esformatter({
indent: {
value: ' '
},
plugins: ['esformatter-jsx']
}))
.pipe(gulp.dest(app_root));
2015-12-23 05:04:21 -08:00
});
2015-12-19 07:39:51 -08:00
2015-12-19 06:47:57 -08:00
gulp.task('build', ['build:jsx']);
gulp.task('build:jsx', function() {
2015-12-22 06:35:22 -08:00
return gulp.src(['src/browser/**/*.jsx', '!src/node_modules/**'])
2015-12-19 06:47:57 -08:00
.pipe(changed(app_root, {
extension: '.js'
}))
.pipe(babel({
presets: ['react']
}))
2015-12-22 06:35:22 -08:00
.pipe(gulp.dest('src/browser/build'));
});
2015-12-23 05:04:21 -08:00
gulp.task('serve', ['build'], function() {
var options = ['--livereload'];
electron.start(options);
2015-12-23 05:04:21 -08:00
gulp.watch(['src/**', '!src/browser/**', '!src/node_modules/**'], function() {
electron.restart(options);
});
2015-12-23 05:04:21 -08:00
gulp.watch('src/browser/**/*.jsx', ['build:jsx']);
gulp.watch(['src/browser/**', '!src/browser/**/*.jsx'], electron.reload);
gulp.watch('gulpfile.js', process.exit);
});
2015-12-19 02:43:57 -08:00
function makePackage(platform, arch, callback) {
var packageJson = require('./src/package.json');
2015-10-24 01:44:47 -07:00
packager({
2015-12-19 06:47:57 -08:00
dir: './' + app_root,
2015-10-24 01:44:47 -07:00
name: packageJson.name,
platform: platform,
arch: arch,
2015-11-20 02:36:54 -08:00
version: '0.35.1',
2015-10-24 01:44:47 -07:00
out: './release',
prune: true,
2015-10-24 04:12:22 -07:00
overwrite: true,
"app-version": packageJson.version,
icon: 'resources/electron-mattermost',
"version-string": {
CompanyName: packageJson.author,
LegalCopyright: 'Copyright (c) 2015 ' + packageJson.author,
FileDescription: packageJson.name,
OriginalFilename: packageJson.name + '.exe',
ProductVersion: packageJson.version,
ProductName: packageJson.name,
InternalName: packageJson.name
}
2015-10-24 01:44:47 -07:00
}, function(err, appPath) {
if (err) {
2015-12-19 02:43:57 -08:00
callback(err);
2015-10-24 01:44:47 -07:00
}
else {
2015-12-19 02:43:57 -08:00
callback();
2015-10-24 01:44:47 -07:00
}
});
};
2015-12-24 06:33:39 -08:00
gulp.task('package', ['build'], function(cb) {
2015-12-19 02:43:57 -08:00
makePackage(process.platform, 'all', cb);
});
2015-12-24 06:33:39 -08:00
gulp.task('package:all', ['build'], function(cb) {
2015-12-19 02:43:57 -08:00
makePackage('all', 'all', cb);
});
2015-12-24 06:33:39 -08:00
gulp.task('package:windows', ['build'], function(cb) {
2015-12-19 02:43:57 -08:00
makePackage('win32', 'all', cb);
});
2015-12-24 06:33:39 -08:00
gulp.task('package:osx', ['build'], function(cb) {
2015-12-19 02:43:57 -08:00
makePackage('darwin', 'all', cb);
});
2015-12-24 06:33:39 -08:00
gulp.task('package:linux', ['build'], function(cb) {
2015-12-19 02:43:57 -08:00
makePackage('linux', 'all', cb);
2015-10-24 01:44:47 -07:00
});
gulp.task('sync-meta', function() {
var appPackageJson = require('./src/package.json');
var packageJson = require('./package.json');
appPackageJson.name = packageJson.name;
appPackageJson.version = packageJson.version;
appPackageJson.description = packageJson.description;
appPackageJson.author = packageJson.author;
appPackageJson.license = packageJson.license;
var fs = require('fs');
fs.writeFileSync('./src/package.json', JSON.stringify(appPackageJson, null, ' ') + '\n');
});