UNPKG

1.42 kBJavaScriptView Raw
1'use strict';
2
3var exec = require('child_process').exec;
4
5module.exports = function(site, cwd, name, version, cb) {
6 var user = site.user,
7 domain = site.domain || "www";
8 for (var i = 0, j = 0, len = site.ips.length; i < len; i++) {
9 var ip = site.ips[i];
10
11 if (!user || !ip || ip === 'localhost' || ip === '127.0.0.1') {
12 cb("请指定远程服务器和登录用户名。");
13 return;
14 }
15
16 var ssh = user + "@" + ip;
17 var dest = (user === "root" ? "/root" : "/home/" + user) + "/var/" + domain;
18 var zip = name /* + "@" + version */ + '.zip';
19
20 var command = " ";
21 if (process.platform === "win32") {
22 command = "cmd /c ";
23 }
24
25 var
26 sf = dest + "/" + name,
27 sl = "current",
28 folder = sf + "/" + version;
29
30 var opr = command + "ssh " + ssh + " \"mkdir -p " + dest + "\" ";
31
32 opr += "&& " + command + "scp -r " + zip + " " + ssh + ":" + dest + "/ ";
33
34 opr += "&& " + command + "ssh " + ssh +
35 " \"mkdir -p " + folder +
36 " && unzip -o " + dest + "/" + zip + " -d " + folder + "/" +
37 " && cd " + sf + "/" +
38 " && rm -rf " + sl +
39 " && ln -sf " + folder + " " + sl +
40 "\"";
41
42 exec(opr, {
43 cwd: cwd,
44 maxBuffer: 16000 * 1024
45 }, function(err, stdout, stderr) {
46 j++;
47 console.log(stdout);
48 if (err) {
49 return cb(err);
50 }
51 if (j == len) {
52 cb();
53 }
54 });
55 }
56};
\No newline at end of file