This repository has been archived by the owner on Jun 27, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path__gulpfile.js
122 lines (101 loc) · 2.91 KB
/
__gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
require('babel-register')({
presets: ['es2015']
});
var gulp = require('gulp');
var _ = require('lodash');
var path = require('path');
var gutil = require('gulp-util');
var mkdirp = require('mkdirp');
var Rsync = require('rsync');
var Promise = require('bluebird');
var eslint = require('gulp-eslint');
var del = require('del');
var tar = require('gulp-tar');
var gzip = require('gulp-gzip');
var fs = require('fs');
var pkg = require('./package.json');
var packageName = pkg.name + '-' + pkg.version;
// relative location of Kibana install
var pathToKibana = '../../kibana';
var buildDir = path.resolve(__dirname, 'build');
var targetDir = path.resolve(__dirname, 'target');
var buildTarget = path.resolve(buildDir, pkg.name);
var kibanaPluginDir = path.resolve(__dirname, pathToKibana, 'installedPlugins', pkg.name);
var include = [
'package.json',
'index.js',
'node_modules',
'public',
'webpackShims',
'server'
];
var exclude = [
'gulpfile.js',
'.eslintrc'
];
Object.keys(pkg.devDependencies).forEach(function (name) {
exclude.push(path.join('node_modules', name));
});
function syncPluginTo(dest, done) {
mkdirp(dest, function (err) {
if (err) return done(err);
var source = path.resolve(__dirname) + '/';
var rsync = new Rsync();
rsync.source(source)
.destination(dest)
.flags('uav')
.recursive(true)
.set('delete')
.include(include)
.exclude(exclude)
.output(function (data) {
process.stdout.write(data.toString('utf8'));
});
rsync.execute(function (err) {
if (err) {
console.log(err);
return done(err);
}
done();
});
});
}
gulp.task('sync', function (done) {
syncPluginTo(kibanaPluginDir, done);
});
gulp.task('lint', function (done) {
var filePaths = [
'gulpfile.js',
'server/**/*.js',
'public/**/*.js',
'public/**/*.jsx',
];
return gulp.src(filePaths)
// eslint() attaches the lint output to the eslint property
// of the file object so it can be used by other modules.
.pipe(eslint())
// eslint.format() outputs the lint results to the console.
// Alternatively use eslint.formatEach() (see Docs).
.pipe(eslint.formatEach())
// To have the process exit with an error code (1) on
// lint error, return the stream and pipe to failOnError last.
.pipe(eslint.failOnError());
});
gulp.task('test', ['lint'], function () {
gutil.log(gutil.colors.red('Nothing to test...'));
});
gulp.task('clean', function () {
return del([buildDir, targetDir]);
});
gulp.task('build', ['clean'], function (done) {
syncPluginTo(buildTarget, done);
});
gulp.task('package', ['build'], function (done) {
return gulp.src(path.join(buildDir, '**', '*'))
.pipe(tar(packageName + '.tar'))
.pipe(gzip())
.pipe(gulp.dest(targetDir));
});
gulp.task('dev', ['sync'], function (done) {
gulp.watch(['package.json', 'index.js', 'public/**/*', 'server/**/*'], ['sync', 'lint']);
});