zideploy 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/deploy.d.ts +14 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +143 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +79 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/config/mirrors.d.ts +13 -0
- package/dist/config/mirrors.d.ts.map +1 -0
- package/dist/config/mirrors.js +25 -0
- package/dist/config/mirrors.js.map +1 -0
- package/dist/deploy/detector.d.ts +4 -0
- package/dist/deploy/detector.d.ts.map +1 -0
- package/dist/deploy/detector.js +67 -0
- package/dist/deploy/detector.js.map +1 -0
- package/dist/deploy/direct-deploy.d.ts +6 -0
- package/dist/deploy/direct-deploy.d.ts.map +1 -0
- package/dist/deploy/direct-deploy.js +100 -0
- package/dist/deploy/direct-deploy.js.map +1 -0
- package/dist/deploy/docker-deploy.d.ts +5 -0
- package/dist/deploy/docker-deploy.d.ts.map +1 -0
- package/dist/deploy/docker-deploy.js +63 -0
- package/dist/deploy/docker-deploy.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +269 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/prompts/credentials.d.ts +4 -0
- package/dist/prompts/credentials.d.ts.map +1 -0
- package/dist/prompts/credentials.js +86 -0
- package/dist/prompts/credentials.js.map +1 -0
- package/dist/setup/docker.d.ts +5 -0
- package/dist/setup/docker.d.ts.map +1 -0
- package/dist/setup/docker.js +55 -0
- package/dist/setup/docker.js.map +1 -0
- package/dist/setup/mirrors.d.ts +6 -0
- package/dist/setup/mirrors.d.ts.map +1 -0
- package/dist/setup/mirrors.js +52 -0
- package/dist/setup/mirrors.js.map +1 -0
- package/dist/setup/nginx.d.ts +6 -0
- package/dist/setup/nginx.d.ts.map +1 -0
- package/dist/setup/nginx.js +87 -0
- package/dist/setup/nginx.js.map +1 -0
- package/dist/setup/nodejs.d.ts +6 -0
- package/dist/setup/nodejs.d.ts.map +1 -0
- package/dist/setup/nodejs.js +69 -0
- package/dist/setup/nodejs.js.map +1 -0
- package/dist/ssh/client.d.ts +18 -0
- package/dist/ssh/client.d.ts.map +1 -0
- package/dist/ssh/client.js +70 -0
- package/dist/ssh/client.js.map +1 -0
- package/dist/types/index.d.ts +32 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.configureUbuntuMirrors = configureUbuntuMirrors;
|
|
7
|
+
exports.configureDockerMirrors = configureDockerMirrors;
|
|
8
|
+
exports.configureNpmMirror = configureNpmMirror;
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const mirrors_1 = require("../config/mirrors");
|
|
11
|
+
async function configureUbuntuMirrors(ssh, creds) {
|
|
12
|
+
if (creds.location !== 'ir' || !creds.ubuntuVersion)
|
|
13
|
+
return;
|
|
14
|
+
const spinner = (0, ora_1.default)('Configuring Ubuntu mirrors for IR server...').start();
|
|
15
|
+
try {
|
|
16
|
+
const mirrorContent = (0, mirrors_1.getUbuntuSourcesList)(creds.ubuntuVersion);
|
|
17
|
+
await ssh.sudo(`cp /etc/apt/sources.list /etc/apt/sources.list.bak`);
|
|
18
|
+
await ssh.sudo(`bash -c "echo '${mirrorContent.replace(/'/g, "'\\''")}' > /etc/apt/sources.list"`);
|
|
19
|
+
await ssh.sudo('apt-get update -y');
|
|
20
|
+
spinner.succeed('Ubuntu apt mirrors configured (Chabokan)');
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
spinner.fail('Failed to configure Ubuntu mirrors');
|
|
24
|
+
throw err;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function configureDockerMirrors(ssh) {
|
|
28
|
+
const spinner = (0, ora_1.default)('Configuring Docker registry mirrors for IR server...').start();
|
|
29
|
+
try {
|
|
30
|
+
const daemonJson = JSON.stringify(mirrors_1.DOCKER_MIRROR, null, 2);
|
|
31
|
+
await ssh.sudo(`mkdir -p /etc/docker`);
|
|
32
|
+
await ssh.sudo(`bash -c "echo '${daemonJson.replace(/'/g, "'\\''")}' > /etc/docker/daemon.json"`);
|
|
33
|
+
await ssh.sudo('systemctl restart docker');
|
|
34
|
+
spinner.succeed('Docker mirrors configured (Chabokan)');
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
spinner.fail('Failed to configure Docker mirrors');
|
|
38
|
+
throw err;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async function configureNpmMirror(ssh) {
|
|
42
|
+
const spinner = (0, ora_1.default)('Configuring npm registry mirror for IR server...').start();
|
|
43
|
+
try {
|
|
44
|
+
await ssh.exec(`npm config set registry ${mirrors_1.NPM_MIRROR.registry}`);
|
|
45
|
+
spinner.succeed(`npm registry set to ${mirrors_1.NPM_MIRROR.registry}`);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
spinner.fail('Failed to configure npm mirror');
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=mirrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirrors.js","sourceRoot":"","sources":["../../src/setup/mirrors.ts"],"names":[],"mappings":";;;;;AAKA,wDAcC;AAED,wDAYC;AAED,gDASC;AA5CD,8CAAsB;AAGtB,+CAAoF;AAE7E,KAAK,UAAU,sBAAsB,CAAC,GAAc,EAAE,KAAwB;IACnF,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,OAAO;IAE5D,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,6CAA6C,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,8BAAoB,EAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChE,MAAM,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACrE,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACnG,MAAM,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACnD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAAC,GAAc;IACzD,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,sDAAsD,CAAC,CAAC,KAAK,EAAE,CAAC;IACpF,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;QAClG,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC3C,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACnD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,GAAc;IACrD,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,kDAAkD,CAAC,CAAC,KAAK,EAAE,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,CAAC,2BAA2B,oBAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,OAAO,CAAC,uBAAuB,oBAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SSHClient } from '../ssh/client';
|
|
2
|
+
import { NginxSubdomainConfig } from '../types';
|
|
3
|
+
export declare function installNginx(ssh: SSHClient): Promise<void>;
|
|
4
|
+
export declare function createSubdomain(ssh: SSHClient, config: NginxSubdomainConfig): Promise<void>;
|
|
5
|
+
export declare function removeSubdomain(ssh: SSHClient, projectName: string): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=nginx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nginx.d.ts","sourceRoot":"","sources":["../../src/setup/nginx.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAC;AAEjE,wBAAsB,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhE;AA6BD,wBAAsB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBjG;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.installNginx = installNginx;
|
|
7
|
+
exports.createSubdomain = createSubdomain;
|
|
8
|
+
exports.removeSubdomain = removeSubdomain;
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const types_1 = require("../types");
|
|
11
|
+
async function installNginx(ssh) {
|
|
12
|
+
const alreadyInstalled = await ssh.commandExists('nginx');
|
|
13
|
+
if (alreadyInstalled) {
|
|
14
|
+
console.log(' Nginx already installed, skipping.');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const spinner = (0, ora_1.default)('Installing Nginx...').start();
|
|
18
|
+
try {
|
|
19
|
+
await ssh.sudo('apt-get install -y nginx');
|
|
20
|
+
await ssh.sudo('systemctl enable nginx');
|
|
21
|
+
await ssh.sudo('systemctl start nginx');
|
|
22
|
+
spinner.succeed('Nginx installed');
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
spinner.fail('Failed to install Nginx');
|
|
26
|
+
throw err;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function buildNginxConfig(config) {
|
|
30
|
+
const subdomain = `${config.projectName}.${types_1.PLATFORM_DOMAIN}`;
|
|
31
|
+
const serverNames = config.clientDomain
|
|
32
|
+
? `${subdomain} ${config.clientDomain} www.${config.clientDomain}`
|
|
33
|
+
: subdomain;
|
|
34
|
+
return `server {
|
|
35
|
+
listen 80;
|
|
36
|
+
server_name ${serverNames};
|
|
37
|
+
|
|
38
|
+
access_log /var/log/nginx/${config.projectName}.access.log;
|
|
39
|
+
error_log /var/log/nginx/${config.projectName}.error.log;
|
|
40
|
+
|
|
41
|
+
location / {
|
|
42
|
+
proxy_pass http://127.0.0.1:${config.appPort};
|
|
43
|
+
proxy_http_version 1.1;
|
|
44
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
45
|
+
proxy_set_header Connection 'upgrade';
|
|
46
|
+
proxy_set_header Host $host;
|
|
47
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
48
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
49
|
+
proxy_cache_bypass $http_upgrade;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
}
|
|
54
|
+
async function createSubdomain(ssh, config) {
|
|
55
|
+
const spinner = (0, ora_1.default)(`Setting up ${config.projectName}.${types_1.PLATFORM_DOMAIN}...`).start();
|
|
56
|
+
try {
|
|
57
|
+
const nginxConf = buildNginxConfig(config);
|
|
58
|
+
const confPath = `/etc/nginx/sites-available/${config.projectName}`;
|
|
59
|
+
const enabledPath = `/etc/nginx/sites-enabled/${config.projectName}`;
|
|
60
|
+
await ssh.sudo(`bash -c "cat > ${confPath} << 'NGINX_EOF'\n${nginxConf}\nNGINX_EOF"`);
|
|
61
|
+
await ssh.sudo(`ln -sf ${confPath} ${enabledPath}`);
|
|
62
|
+
await ssh.sudo('nginx -t');
|
|
63
|
+
await ssh.sudo('systemctl reload nginx');
|
|
64
|
+
spinner.succeed(`Subdomain configured: ${config.projectName}.${types_1.PLATFORM_DOMAIN}`);
|
|
65
|
+
if (config.clientDomain) {
|
|
66
|
+
console.log(` Also serving: ${config.clientDomain}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
spinner.fail('Failed to configure Nginx subdomain');
|
|
71
|
+
throw err;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async function removeSubdomain(ssh, projectName) {
|
|
75
|
+
const spinner = (0, ora_1.default)(`Removing subdomain for ${projectName}...`).start();
|
|
76
|
+
try {
|
|
77
|
+
await ssh.sudo(`rm -f /etc/nginx/sites-enabled/${projectName}`);
|
|
78
|
+
await ssh.sudo(`rm -f /etc/nginx/sites-available/${projectName}`);
|
|
79
|
+
await ssh.sudo('systemctl reload nginx');
|
|
80
|
+
spinner.succeed(`Subdomain removed: ${projectName}.${types_1.PLATFORM_DOMAIN}`);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
spinner.fail('Failed to remove Nginx subdomain');
|
|
84
|
+
throw err;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=nginx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nginx.js","sourceRoot":"","sources":["../../src/setup/nginx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SSHClient } from '../ssh/client';
|
|
2
|
+
import { ServerCredentials } from '../types';
|
|
3
|
+
export declare function installNodejs(ssh: SSHClient, creds: ServerCredentials): Promise<void>;
|
|
4
|
+
export declare function installPm2(ssh: SSHClient): Promise<void>;
|
|
5
|
+
export declare function installPhp(ssh: SSHClient): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=nodejs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs.d.ts","sourceRoot":"","sources":["../../src/setup/nodejs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK7C,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3F;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9D;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.installNodejs = installNodejs;
|
|
7
|
+
exports.installPm2 = installPm2;
|
|
8
|
+
exports.installPhp = installPhp;
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const mirrors_1 = require("./mirrors");
|
|
11
|
+
const NODE_VERSION = '20';
|
|
12
|
+
async function installNodejs(ssh, creds) {
|
|
13
|
+
const alreadyInstalled = await ssh.commandExists('node');
|
|
14
|
+
if (alreadyInstalled) {
|
|
15
|
+
console.log(' Node.js already installed, skipping.');
|
|
16
|
+
if (creds.location === 'ir') {
|
|
17
|
+
await (0, mirrors_1.configureNpmMirror)(ssh);
|
|
18
|
+
}
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const spinner = (0, ora_1.default)(`Installing Node.js ${NODE_VERSION}...`).start();
|
|
22
|
+
try {
|
|
23
|
+
await ssh.sudo(`curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x | bash -`);
|
|
24
|
+
await ssh.sudo('apt-get install -y nodejs');
|
|
25
|
+
if (creds.location === 'ir') {
|
|
26
|
+
spinner.text = 'Configuring npm mirror for IR...';
|
|
27
|
+
await (0, mirrors_1.configureNpmMirror)(ssh);
|
|
28
|
+
}
|
|
29
|
+
spinner.succeed(`Node.js ${NODE_VERSION} installed`);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
spinner.fail('Failed to install Node.js');
|
|
33
|
+
throw err;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function installPm2(ssh) {
|
|
37
|
+
const alreadyInstalled = await ssh.commandExists('pm2');
|
|
38
|
+
if (alreadyInstalled)
|
|
39
|
+
return;
|
|
40
|
+
const spinner = (0, ora_1.default)('Installing PM2...').start();
|
|
41
|
+
try {
|
|
42
|
+
await ssh.exec('npm install -g pm2');
|
|
43
|
+
await ssh.sudo('pm2 startup systemd -u root --hp /root');
|
|
44
|
+
spinner.succeed('PM2 installed');
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
spinner.fail('Failed to install PM2');
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function installPhp(ssh) {
|
|
52
|
+
const alreadyInstalled = await ssh.commandExists('php');
|
|
53
|
+
if (alreadyInstalled) {
|
|
54
|
+
console.log(' PHP already installed, skipping.');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const spinner = (0, ora_1.default)('Installing PHP + PHP-FPM...').start();
|
|
58
|
+
try {
|
|
59
|
+
await ssh.sudo('apt-get install -y php php-fpm php-cli php-mbstring php-xml php-curl php-zip php-mysql php-pgsql');
|
|
60
|
+
await ssh.sudo('systemctl enable php*-fpm');
|
|
61
|
+
await ssh.sudo('systemctl start php*-fpm');
|
|
62
|
+
spinner.succeed('PHP installed');
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
spinner.fail('Failed to install PHP');
|
|
66
|
+
throw err;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=nodejs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/setup/nodejs.ts"],"names":[],"mappings":";;;;;AAOA,sCAyBC;AAED,gCAaC;AAED,gCAiBC;AAlED,8CAAsB;AAGtB,uCAA+C;AAE/C,MAAM,YAAY,GAAG,IAAI,CAAC;AAEnB,KAAK,UAAU,aAAa,CAAC,GAAc,EAAE,KAAwB;IAC1E,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,sBAAsB,YAAY,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,CAAC,+CAA+C,YAAY,aAAa,CAAC,CAAC;QACzF,MAAM,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,GAAG,kCAAkC,CAAC;YAClD,MAAM,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,WAAW,YAAY,YAAY,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,GAAc;IAC7C,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,gBAAgB;QAAE,OAAO;IAE7B,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACzD,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,GAAc;IAC7C,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,6BAA6B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAC;QACnH,MAAM,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC3C,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SSHExecCommandOptions } from 'node-ssh';
|
|
2
|
+
import { ServerCredentials, CommandResult } from '../types';
|
|
3
|
+
export declare class SSHClient {
|
|
4
|
+
private ssh;
|
|
5
|
+
private creds;
|
|
6
|
+
private isRoot;
|
|
7
|
+
constructor(credentials: ServerCredentials);
|
|
8
|
+
connect(): Promise<void>;
|
|
9
|
+
exec(command: string, opts?: SSHExecCommandOptions): Promise<CommandResult>;
|
|
10
|
+
sudo(command: string, opts?: SSHExecCommandOptions): Promise<CommandResult>;
|
|
11
|
+
writeFile(remotePath: string, content: string): Promise<void>;
|
|
12
|
+
putDirectory(localPath: string, remotePath: string): Promise<void>;
|
|
13
|
+
fileExists(remotePath: string): Promise<boolean>;
|
|
14
|
+
directoryExists(remotePath: string): Promise<boolean>;
|
|
15
|
+
commandExists(cmd: string): Promise<boolean>;
|
|
16
|
+
disconnect(): void;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ssh/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAM5D,qBAAa,SAAS;IACpB,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,WAAW,EAAE,iBAAiB;IAKpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAS3E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ3E,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKhD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlD,UAAU,IAAI,IAAI;CAGnB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SSHClient = void 0;
|
|
4
|
+
const node_ssh_1 = require("node-ssh");
|
|
5
|
+
function shellEscape(str) {
|
|
6
|
+
return str.replace(/'/g, "'\\''");
|
|
7
|
+
}
|
|
8
|
+
class SSHClient {
|
|
9
|
+
constructor(credentials) {
|
|
10
|
+
this.isRoot = false;
|
|
11
|
+
this.ssh = new node_ssh_1.NodeSSH();
|
|
12
|
+
this.creds = credentials;
|
|
13
|
+
}
|
|
14
|
+
async connect() {
|
|
15
|
+
await this.ssh.connect({
|
|
16
|
+
host: this.creds.host,
|
|
17
|
+
port: this.creds.port,
|
|
18
|
+
username: this.creds.username,
|
|
19
|
+
password: this.creds.password,
|
|
20
|
+
readyTimeout: 20000,
|
|
21
|
+
});
|
|
22
|
+
this.isRoot = this.creds.username === 'root';
|
|
23
|
+
}
|
|
24
|
+
async exec(command, opts) {
|
|
25
|
+
const result = await this.ssh.execCommand(command, opts);
|
|
26
|
+
return {
|
|
27
|
+
stdout: result.stdout,
|
|
28
|
+
stderr: result.stderr,
|
|
29
|
+
code: result.code,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
async sudo(command, opts) {
|
|
33
|
+
if (this.isRoot) {
|
|
34
|
+
return this.exec(command, opts);
|
|
35
|
+
}
|
|
36
|
+
const escaped = shellEscape(this.creds.password);
|
|
37
|
+
return this.exec(`echo '${escaped}' | sudo -S bash -c '${shellEscape(command)}'`, opts);
|
|
38
|
+
}
|
|
39
|
+
async writeFile(remotePath, content) {
|
|
40
|
+
const escaped = content.replace(/'/g, "'\\''");
|
|
41
|
+
await this.sudo(`tee ${remotePath} > /dev/null << 'ZIDEPLOY_EOF'\n${content}\nZIDEPLOY_EOF`);
|
|
42
|
+
}
|
|
43
|
+
async putDirectory(localPath, remotePath) {
|
|
44
|
+
await this.ssh.putDirectory(localPath, remotePath, {
|
|
45
|
+
recursive: true,
|
|
46
|
+
concurrency: 5,
|
|
47
|
+
validate: (itemPath) => {
|
|
48
|
+
const base = itemPath.split('/').pop() || '';
|
|
49
|
+
return base !== 'node_modules' && base !== '.git' && base !== 'dist';
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async fileExists(remotePath) {
|
|
54
|
+
const result = await this.exec(`test -f ${remotePath} && echo yes || echo no`);
|
|
55
|
+
return result.stdout.trim() === 'yes';
|
|
56
|
+
}
|
|
57
|
+
async directoryExists(remotePath) {
|
|
58
|
+
const result = await this.exec(`test -d ${remotePath} && echo yes || echo no`);
|
|
59
|
+
return result.stdout.trim() === 'yes';
|
|
60
|
+
}
|
|
61
|
+
async commandExists(cmd) {
|
|
62
|
+
const result = await this.exec(`command -v ${cmd} && echo yes || echo no`);
|
|
63
|
+
return result.stdout.trim() === 'yes';
|
|
64
|
+
}
|
|
65
|
+
disconnect() {
|
|
66
|
+
this.ssh.dispose();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.SSHClient = SSHClient;
|
|
70
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ssh/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type UbuntuVersion = 'bionic' | 'focal' | 'jammy' | 'noble';
|
|
2
|
+
export type ServerLocation = 'ir' | 'global';
|
|
3
|
+
export type ProjectType = 'node' | 'php' | 'docker' | 'go' | 'static' | 'unknown';
|
|
4
|
+
export interface ServerCredentials {
|
|
5
|
+
host: string;
|
|
6
|
+
port: number;
|
|
7
|
+
username: string;
|
|
8
|
+
password: string;
|
|
9
|
+
location: ServerLocation;
|
|
10
|
+
ubuntuVersion?: UbuntuVersion;
|
|
11
|
+
}
|
|
12
|
+
export interface DeployConfig {
|
|
13
|
+
server: ServerCredentials;
|
|
14
|
+
projectName: string;
|
|
15
|
+
clientDomain: string;
|
|
16
|
+
localProjectPath: string;
|
|
17
|
+
appPort: number;
|
|
18
|
+
projectType?: ProjectType;
|
|
19
|
+
}
|
|
20
|
+
export interface CommandResult {
|
|
21
|
+
stdout: string;
|
|
22
|
+
stderr: string;
|
|
23
|
+
code: number | null;
|
|
24
|
+
}
|
|
25
|
+
export interface NginxSubdomainConfig {
|
|
26
|
+
projectName: string;
|
|
27
|
+
appPort: number;
|
|
28
|
+
clientDomain?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare const UBUNTU_VERSION_NAMES: Record<UbuntuVersion, string>;
|
|
31
|
+
export declare const PLATFORM_DOMAIN = "zisites.app";
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACnE,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,QAAQ,CAAC;AAC7C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAK9D,CAAC;AAEF,eAAO,MAAM,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PLATFORM_DOMAIN = exports.UBUNTU_VERSION_NAMES = void 0;
|
|
4
|
+
exports.UBUNTU_VERSION_NAMES = {
|
|
5
|
+
bionic: '18.04 (Bionic)',
|
|
6
|
+
focal: '20.04 (Focal)',
|
|
7
|
+
jammy: '22.04 (Jammy)',
|
|
8
|
+
noble: '24.04 (Noble)',
|
|
9
|
+
};
|
|
10
|
+
exports.PLATFORM_DOMAIN = 'zisites.app';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAkCa,QAAA,oBAAoB,GAAkC;IACjE,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,eAAe;CACvB,CAAC;AAEW,QAAA,eAAe,GAAG,aAAa,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "zideploy",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "ZiSales Deploy Plugin - Deploy projects to PaaS servers via Claude Code",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"zideploy": "dist/index.js",
|
|
8
|
+
"zideploy-mcp": "dist/mcp-server.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "ts-node src/index.ts",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"prepublish": "npm run build"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
18
|
+
"chalk": "^4.1.2",
|
|
19
|
+
"commander": "^11.1.0",
|
|
20
|
+
"inquirer": "^8.2.6",
|
|
21
|
+
"node-ssh": "^13.1.0",
|
|
22
|
+
"ora": "^5.4.1",
|
|
23
|
+
"zod": "^4.4.3"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/inquirer": "^8.2.10",
|
|
27
|
+
"@types/node": "^20.10.0",
|
|
28
|
+
"ts-node": "^10.9.2",
|
|
29
|
+
"typescript": "^5.3.2"
|
|
30
|
+
}
|
|
31
|
+
}
|