1 | 'use strict';
|
2 |
|
3 | var exec = require('child_process').exec;
|
4 |
|
5 | module.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 + '.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 |