-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
129 lines (113 loc) · 3.56 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
121
122
123
124
125
126
127
128
129
// Copyright 2015 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
'use strict';
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var shell = require('gulp-shell');
var minimist = require('minimist');
var rename = require('gulp-rename');
var debug = require('gulp-debug');
var del = require('del');
// minimist structure and defaults for this task configuration
var knownOptions = {
string: ['env'],
'default': {
env: 'dev'
}
};
var options = minimist(process.argv.slice(2), knownOptions);
// The root working directory where code is edited
var srcRoot = 'src';
// The root staging folder for gapps configurations
var dstRoot = 'build/' + options.env + '/src';
// Runs the copy-latest task, then calls gapps upload in the correct
// configuration directory based on the target environment
gulp.task('upload-latest', ['copy-latest'], shell.task(['gapps upload'],
{cwd: 'build/' + options.env}));
// Copies all files based on the current target environment.
// Completion of "clean-deployment" is a prerequisite for starting the copy
// process.
gulp.task('copy-latest', ['clean-deployment'], function() {
copyEnvironmentSpecific();
copyServerCode();
copyClientCode();
});
// Copies all .js that will be run by the Apps Script runtime
function copyServerCode() {
return gulp.src([
srcRoot + '/server/**/*.js',
srcRoot + '/libs/**/*.js'])
.pipe(gulp.dest(dstRoot));
}
// Appends ".html" to any css, and any js that will be included in client code
// Then copies those .html files to the upload staging folder.
function copyClientCode() {
return gulp.src([
srcRoot + '/ui/*.html',
srcRoot + '/ui/*.css',
srcRoot + '/ui/*.js'])
.pipe(
rename(function(path) {
if (path.extname !== '.html') {
path.extname = path.extname + '.html';
}
return path;
}))
.pipe(gulp.dest(dstRoot));
}
// Does any environment specific work.
// the "lint" step is also here, as that is only done on "dev"
// targeted updates.
function copyEnvironmentSpecific() {
// Do target environment specific work
switch (options.env) {
case 'dev':
gulp.src(srcRoot + '/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
break;
case 'tst':
//Copy test scripts, if target is "tst"
gulp.src(srcRoot + '/tests/*.js')
.pipe(gulp.dest(dstRoot));
break;
default:
break;
}
return gulp.src(srcRoot + '/environments/' + options.env + '/*.js')
.pipe(gulp.dest(dstRoot));
}
gulp.task('lint', function() {
gulp.src(srcRoot + '/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
});
// Utility tasks
gulp.task('clean-deployment', function(cb) {
return del([
dstRoot + '/*.*'
]);
});
gulp.task('clean-deployments', function(cb) {
return del([
'build/dev/src/*.*',
'build/tst/src/*.*' ,
'build/prd/src/*.*'
]);
});
gulp.task('lint', function() {
return gulp.src(srcRoot + '/**/*.js')
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'));
});