UNPKG

3.6 kBJavaScriptView Raw
1var cjson = require('cjson');
2var path = require('path');
3var fs = require('fs');
4var format = require('util').format;
5require('colors');
6
7exports.setup = function(configFileName) {
8
9
10
11 var packageJson = cjson.load(configFileName);
12 // 检查server节点的信息
13 checkServer(packageJson.server);
14 // 检查服务器配置信息
15 checkSetup(packageJson.setup);
16 // 检查部署配置信息
17 checkDeploy(packageJson.deploy);
18
19 if (packageJson.notice) {
20 global.notification = packageJson.notice;
21 }
22
23 return packageJson;
24
25
26 function checkDeploy(configJson) {
27 // console.log(server);
28 //validating servers
29 if (!configJson) {
30 errorLog('Server path information does not exist');
31 } else {
32
33 if (!configJson.appName) {
34 errorLog('Application name does not exist');
35 }
36 if (!configJson.env) {
37 errorLog('Configure environment does not exist');
38 }
39
40 if (packageJson.setup.docker) {
41 if (!configJson.dockerImage) {
42 errorLog('Docker image does not exist');
43 }
44 }
45
46 }
47 }
48
49 function checkSetup(configJson) {
50 // console.log(server);
51 //validating servers
52 if (!configJson) {
53 errorLog('Server path information does not exist');
54 } else {
55
56 if (!configJson.path) {
57 errorLog('Server path does not exist');
58 }
59 if (!/.*\/$/g.test(configJson.path)) {
60 configJson.path = configJson.path + '/';
61 }
62 // console.log(configJson.path);
63 // console.log(/^\/(usr|opt)\//g.test(configJson.path));
64 if (!(/^\/(usr|opt|home|alidata)\//.test(configJson.path))) {
65 errorLog('Server path must in /usr /opt /home /alidata directory');
66 }
67 }
68 }
69
70 function checkServer(server) {
71 // console.log(server);
72 //validating servers
73 if (!server) {
74 errorLog('Server information does not exist');
75 } else {
76
77 if (!server.host) {
78 errorLog('Server host does not exist');
79 } else if (!server.username) {
80 errorLog('Server username does not exist');
81 } else if (!server.password && !server.pem) {
82 errorLog('Server password, pem or a ssh agent does not exist');
83 }
84
85 if (server.pem) {
86 server.pem =
87 rewritePath(server.pem, "SSH private key file is invalid");
88 }
89
90 server.sshOptions = server.sshOptions || {};
91 }
92 }
93 // 检查目录是否存在
94 function rewritePath(location, errorMessage) {
95 if (!location) {
96 return errorLog(errorMessage);
97 }
98
99 var homeLocation = process.env.HOME;
100
101 var location = location.replace('~', homeLocation).trim();
102 // anyway, we need to resolve path for windows compatibility
103 location = path.resolve(location);
104 if (!fs.existsSync(location)) {
105 errorLog(errorMessage);
106 }
107
108 return location;
109 }
110 // 报错
111 function errorLog(message) {
112 var errorMessage = 'Invalid configuration file ' + configFileName + ': ' + message;
113 console.error(errorMessage.red.bold);
114 process.exit(1);
115 }
116
117
118};
119
120
121// ============================================================================
122// ============================================================================