forked from javascript-tutorial/server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfigNginx.js
More file actions
executable file
·75 lines (64 loc) · 2.6 KB
/
configNginx.js
File metadata and controls
executable file
·75 lines (64 loc) · 2.6 KB
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
/**
* Copies nginx config to --prefix dir, passing through EJS template engine
* Usage example:
* gulp config:nginx --prefix /etc/nginx --env prod
*/
var fs = require('fs');
var co = require('co');
var path = require('path');
var gulp = require('gulp');
var gp = require('gulp-load-plugins')();
var mongoose = require('lib/mongoose');
var projectRoot = require('config').projectRoot;
var ejs = require('ejs');
var through = require('through2');
var del = require('del');
var config = require('config');
module.exports = function() {
return function() {
var args = require('yargs')
.usage("Prefix where to put config files is required and environment for the config.\n")
.example("gulp config:nginx --prefix /etc/nginx --root /js/javascript-nodejs --env production")
.example("gulp config:nginx --prefix /etc/nginx --root /js/javascript-nodejs --env production --setPassword --sslEnabled")
.example("gulp config:nginx --prefix /opt/local/etc/nginx --root /js/javascript-nodejs --env development --debug")
.describe("prefix", "where to copy config files")
.describe("env", "test/development/production enviromnent, config files are piped through EJS template, env is used for replacements")
.describe("clear", "delete all files from prefix, use if no other nginx sites exist")
.describe("sslEnabled", "enable ssl (certificates must be placed separately to SECRET_DIR)")
.describe("setPassword", "close access, /etc/nginx.passwd is used for HTTP Auth")
.describe("debug", "enable nginx debug in error_log")
.demand(['prefix', 'env'])
.boolean('setPassword')
.argv;
var locals = {
env: args.env,
root: args.root,
nginxPrefix: args.prefix,
sslEnabled: !!args.sslEnabled,
certDir: config.certDir,
setPassword: !!args.setPassword,
// debug is used for EJS internal debugging
debugOn: args.debug
};
if (args.clear) {
gp.util.log("clear ", args.prefix);
del.sync(path.join(args.prefix, '**'), {force: true});
}
return gulp.src(path.join(projectRoot, 'nginx', '**'))
.pipe(through.obj(function(file, enc, cb) {
if (file.isNull() || /\.dat$/.test(file.path)) {
this.push(file);
return cb();
}
gp.util.log("Process", file.path, '->', args.prefix);
try {
file.contents = new Buffer(ejs.render(file.contents.toString(), locals));
} catch (err) {
this.emit('error', new gp.util.PluginError('configNginx', err));
}
this.push(file);
cb();
}))
.pipe(gulp.dest(args.prefix));
};
};