git-push-deploy-cli 0.1.0 → 0.1.1

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.
Files changed (43) hide show
  1. package/README.md +66 -121
  2. package/dist/commands/deploy.d.ts +2 -1
  3. package/dist/commands/deploy.d.ts.map +1 -1
  4. package/dist/commands/deploy.js +23 -1
  5. package/dist/commands/deploy.js.map +1 -1
  6. package/dist/commands/init.d.ts +6 -3
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +23 -202
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/logs.d.ts +1 -1
  11. package/dist/commands/logs.d.ts.map +1 -1
  12. package/dist/commands/logs.js +19 -25
  13. package/dist/commands/logs.js.map +1 -1
  14. package/dist/commands/status.d.ts +1 -1
  15. package/dist/commands/status.d.ts.map +1 -1
  16. package/dist/commands/status.js +3 -35
  17. package/dist/commands/status.js.map +1 -1
  18. package/dist/config/types.d.ts +7 -6
  19. package/dist/config/types.d.ts.map +1 -1
  20. package/dist/index.js +6 -12
  21. package/dist/index.js.map +1 -1
  22. package/dist/utils/shell.d.ts +6 -0
  23. package/dist/utils/shell.d.ts.map +1 -1
  24. package/dist/utils/shell.js +9 -0
  25. package/dist/utils/shell.js.map +1 -1
  26. package/package.json +1 -1
  27. package/dist/commands/install.d.ts +0 -10
  28. package/dist/commands/install.d.ts.map +0 -1
  29. package/dist/commands/install.js +0 -67
  30. package/dist/commands/install.js.map +0 -1
  31. package/dist/utils/pm2.d.ts +0 -39
  32. package/dist/utils/pm2.d.ts.map +0 -1
  33. package/dist/utils/pm2.js +0 -83
  34. package/dist/utils/pm2.js.map +0 -1
  35. package/dist/utils/process-manager.d.ts +0 -37
  36. package/dist/utils/process-manager.d.ts.map +0 -1
  37. package/dist/utils/process-manager.js +0 -17
  38. package/dist/utils/process-manager.js.map +0 -1
  39. package/dist/utils/systemd.d.ts +0 -34
  40. package/dist/utils/systemd.d.ts.map +0 -1
  41. package/dist/utils/systemd.js +0 -79
  42. package/dist/utils/systemd.js.map +0 -1
  43. package/templates/post-receive.sh +0 -55
@@ -1,42 +1,36 @@
1
1
  import chalk from 'chalk';
2
2
  import { spawn } from 'child_process';
3
3
  import { getServiceConfig } from '../config/loader.js';
4
- import { exec } from '../utils/shell.js';
5
- import { exists } from '../utils/files.js';
6
4
  /**
7
- * Logs command - show deployment logs
5
+ * Logs command - show PM2 logs from server via SSH
8
6
  */
9
7
  export async function logsCommand(serviceName, options = {}) {
8
+ const config = getServiceConfig(serviceName);
9
+ const { host } = config.server;
10
+ const { processName, pm2Home } = config;
10
11
  const lines = options.lines || '50';
11
- const logFile = `/var/log/deploy-${serviceName}.log`;
12
- // Check if log file exists
13
- if (!exists(logFile)) {
14
- // Try to get config to show better error message
15
- try {
16
- getServiceConfig(serviceName);
17
- console.log(chalk.yellow(`Log file not found: ${logFile}`));
18
- console.log(chalk.gray('The service may not have been deployed yet.'));
19
- }
20
- catch {
21
- console.log(chalk.red(`Unknown service: ${serviceName}`));
22
- }
23
- return;
24
- }
12
+ const pm2Env = pm2Home ? `PM2_HOME=${pm2Home}` : '';
13
+ console.log(chalk.blue(`Logs for ${serviceName} from ${host}...`));
14
+ console.log('');
25
15
  if (options.follow) {
26
- console.log(chalk.blue(`Following logs for ${serviceName} (Ctrl+C to exit)...`));
27
- console.log('');
28
- // Use spawn for follow mode
29
- const tail = spawn('tail', ['-f', '-n', lines, logFile], {
16
+ // Use spawn for follow mode with SSH
17
+ const sshArgs = [host, `${pm2Env} pm2 logs ${processName} --lines ${lines}`];
18
+ const ssh = spawn('ssh', sshArgs, {
30
19
  stdio: 'inherit'
31
20
  });
32
- tail.on('error', (error) => {
21
+ ssh.on('error', (error) => {
33
22
  console.error(chalk.red(`Error: ${error.message}`));
34
23
  });
35
24
  }
36
25
  else {
37
- console.log(chalk.blue(`Deployment logs for ${serviceName} (last ${lines} lines):`));
38
- console.log('');
39
- exec(`tail -n ${lines} ${logFile}`);
26
+ // Non-follow mode: get last N lines
27
+ const sshArgs = [host, `${pm2Env} pm2 logs ${processName} --lines ${lines} --nostream`];
28
+ const ssh = spawn('ssh', sshArgs, {
29
+ stdio: 'inherit'
30
+ });
31
+ ssh.on('error', (error) => {
32
+ console.error(chalk.red(`Error: ${error.message}`));
33
+ });
40
34
  }
41
35
  }
42
36
  //# sourceMappingURL=logs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,UAAuB,EAAE;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,MAAM,OAAO,GAAG,mBAAmB,WAAW,MAAM,CAAC;IAErD,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACrB,iDAAiD;QACjD,IAAI,CAAC;YACH,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,WAAW,sBAAsB,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,4BAA4B;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE;YACvD,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,WAAW,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC,WAAW,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOvD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,UAAuB,EAAE;IAC9E,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,WAAW,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,qCAAqC;QACrC,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,MAAM,aAAa,WAAW,YAAY,KAAK,EAAE,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;YAChC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,oCAAoC;QACpC,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,MAAM,aAAa,WAAW,YAAY,KAAK,aAAa,CAAC,CAAC;QACxF,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;YAChC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Status command - show all services and process manager status
2
+ * Status command - show all configured services
3
3
  */
4
4
  export declare function statusCommand(): Promise<void>;
5
5
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqDnD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBnD"}
@@ -1,9 +1,7 @@
1
1
  import chalk from 'chalk';
2
2
  import { loadConfig, listServices } from '../config/loader.js';
3
- import { createProcessManager } from '../utils/process-manager.js';
4
- import { commandExists } from '../utils/shell.js';
5
3
  /**
6
- * Status command - show all services and process manager status
4
+ * Status command - show all configured services
7
5
  */
8
6
  export async function statusCommand() {
9
7
  console.log(chalk.blue('Service Status'));
@@ -15,10 +13,9 @@ export async function statusCommand() {
15
13
  console.log(chalk.white('Configured Services:'));
16
14
  for (const name of services) {
17
15
  const svc = config.services[name];
18
- const pmType = svc.processManager || 'pm2';
19
16
  console.log(chalk.gray(` ${name}`));
20
- console.log(chalk.gray(` Process Manager: ${pmType}`));
21
- console.log(chalk.gray(` Process Name: ${svc.processName}`));
17
+ console.log(chalk.gray(` Host: ${svc.server.host}`));
18
+ console.log(chalk.gray(` Process: ${svc.processName}`));
22
19
  console.log(chalk.gray(` Packages: ${svc.packages.join(', ')}`));
23
20
  console.log(chalk.gray(` Target: ${svc.server.targetDir}`));
24
21
  }
@@ -28,34 +25,5 @@ export async function statusCommand() {
28
25
  console.log(chalk.yellow('No .git-deploy.json found in current directory tree.'));
29
26
  console.log('');
30
27
  }
31
- // Show PM2 status if available
32
- if (commandExists('pm2')) {
33
- console.log(chalk.white('PM2 Processes:'));
34
- try {
35
- const pm2 = createProcessManager('pm2');
36
- const status = pm2.list();
37
- console.log(status);
38
- }
39
- catch {
40
- console.log(chalk.gray(' No PM2 processes running or PM2 not accessible.'));
41
- }
42
- }
43
- // Show systemd status if available
44
- if (commandExists('systemctl')) {
45
- console.log(chalk.white('Systemd Services (running):'));
46
- try {
47
- const systemd = createProcessManager('systemd');
48
- const status = systemd.list();
49
- // Filter to show only relevant lines
50
- const lines = status.split('\n').slice(0, 10);
51
- console.log(chalk.gray(lines.join('\n')));
52
- if (status.split('\n').length > 10) {
53
- console.log(chalk.gray(' ... (use systemctl for full list)'));
54
- }
55
- }
56
- catch {
57
- console.log(chalk.gray(' Could not query systemd.'));
58
- }
59
- }
60
28
  }
61
29
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,2BAA2B;IAC3B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACjD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,4 +1,7 @@
1
- import type { ProcessManagerType } from '../utils/process-manager.js';
1
+ /**
2
+ * Process manager type
3
+ */
4
+ export type ProcessManagerType = 'pm2' | 'systemd';
2
5
  /**
3
6
  * Service configuration for git-deploy
4
7
  */
@@ -19,14 +22,12 @@ export interface ServiceConfig {
19
22
  artifacts?: string[];
20
23
  /** Server-side configuration */
21
24
  server: {
22
- /** Where to install on server */
25
+ /** SSH host (user@hostname) */
26
+ host: string;
27
+ /** Where to install on server (clone of bare repo) */
23
28
  targetDir: string;
24
29
  /** Path to bare git repo on server */
25
30
  bareRepo: string;
26
- /** Unix user for file ownership */
27
- user?: string;
28
- /** Unix group (default: deploy-<service>) */
29
- group?: string;
30
31
  };
31
32
  }
32
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,kBAAkB,CAAC;IAEpC,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,gCAAgC;IAChC,MAAM,EAAE;QACN,iCAAiC;QACjC,SAAS,EAAE,MAAM,CAAC;QAElB,sCAAsC;QACtC,QAAQ,EAAE,MAAM,CAAC;QAEjB,mCAAmC;QACnC,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd,6CAA6C;QAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAK7B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IAEpB,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IAEnB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,kBAAkB,CAAC;IAEpC,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,gCAAgC;IAChC,MAAM,EAAE;QACN,+BAA+B;QAC/B,IAAI,EAAE,MAAM,CAAC;QAEb,sDAAsD;QACtD,SAAS,EAAE,MAAM,CAAC;QAElB,sCAAsC;QACtC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAK7B,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,6 @@ import { stageCommand } from './commands/stage.js';
4
4
  import { releaseCommand } from './commands/release.js';
5
5
  import { deployCommand } from './commands/deploy.js';
6
6
  import { initCommand } from './commands/init.js';
7
- import { installCommand } from './commands/install.js';
8
7
  import { statusCommand } from './commands/status.js';
9
8
  import { logsCommand } from './commands/logs.js';
10
9
  const program = new Command();
@@ -24,27 +23,22 @@ program
24
23
  .action(releaseCommand);
25
24
  program
26
25
  .command('deploy <service>')
27
- .description('Stage and release in one step')
26
+ .description('Stage, release, and install on server via SSH')
28
27
  .option('-m, --message <message>', 'Commit message')
28
+ .option('--skip-remote', 'Skip remote install (only stage and release)')
29
29
  .action(deployCommand);
30
- // Server commands
30
+ // Server setup command
31
31
  program
32
32
  .command('init <service>')
33
- .description('Initialize bare repo, hook, and permissions on server')
34
- .option('--users <users>', 'Comma-separated list of users to add to group')
33
+ .description('Initialize bare repo and clone on server via SSH')
35
34
  .action(initCommand);
36
- program
37
- .command('install <service>')
38
- .description('Extract, npm install, pm2 restart (used by post-receive hook)')
39
- .option('--ref <ref>', 'Git ref to deploy (branch or tag)', 'main')
40
- .action(installCommand);
41
35
  program
42
36
  .command('status')
43
- .description('Show all services and PM2 status')
37
+ .description('Show all configured services')
44
38
  .action(statusCommand);
45
39
  program
46
40
  .command('logs <service>')
47
- .description('Show deployment logs')
41
+ .description('Show PM2 logs from server via SSH')
48
42
  .option('-n, --lines <lines>', 'Number of lines to show', '50')
49
43
  .option('-f, --follow', 'Follow log output')
50
44
  .action(logsCommand);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,0EAA0E,CAAC;KACvF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uBAAuB;AACvB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;KACnD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;KACnD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;KAC1E,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,aAAa,EAAE,mCAAmC,EAAE,MAAM,CAAC;KAClE,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAC9D,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,0EAA0E,CAAC;KACvF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uBAAuB;AACvB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;KACnD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;KACnD,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC;KACvE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,uBAAuB;AACvB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAC9D,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -21,4 +21,10 @@ export declare function isRoot(): boolean;
21
21
  * Get current username
22
22
  */
23
23
  export declare function getCurrentUser(): string;
24
+ /**
25
+ * Execute a command on a remote host via SSH
26
+ */
27
+ export declare function sshExec(host: string, command: string, options?: {
28
+ silent?: boolean;
29
+ }): string;
24
30
  //# sourceMappingURL=shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAc9F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAc9F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAKjG"}
@@ -48,4 +48,13 @@ export function isRoot() {
48
48
  export function getCurrentUser() {
49
49
  return process.env.USER || process.env.USERNAME || 'unknown';
50
50
  }
51
+ /**
52
+ * Execute a command on a remote host via SSH
53
+ */
54
+ export function sshExec(host, command, options = {}) {
55
+ // Escape single quotes in command for SSH
56
+ const escapedCmd = command.replace(/'/g, "'\\''");
57
+ const sshCommand = `ssh ${host} '${escapedCmd}'`;
58
+ return exec(sshCommand, { silent: options.silent });
59
+ }
51
60
  //# sourceMappingURL=shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,UAA8C,EAAE;IACpF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE;YAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC3C,CAAC,CAAC;QACH,OAAO,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YAChD,OAAQ,KAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,GAAY;IACtD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,QAAQ,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,UAA8C,EAAE;IACpF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE;YAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC3C,CAAC,CAAC;QACH,OAAO,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;YAChD,OAAQ,KAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,GAAY;IACtD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,QAAQ,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,OAAe,EAAE,UAAgC,EAAE;IACvF,0CAA0C;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,UAAU,GAAG,CAAC;IACjD,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-push-deploy-cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Git Push Deploy - CLI for git-based deployments. Push to bare repos, auto npm install, PM2/systemd restart. Monorepo-ready.",
5
5
  "keywords": [
6
6
  "git",
@@ -1,10 +0,0 @@
1
- interface InstallOptions {
2
- ref?: string;
3
- }
4
- /**
5
- * Install command - extract, npm install, restart process
6
- * This is called by the post-receive hook
7
- */
8
- export declare function installCommand(serviceName: string, options?: InstallOptions): Promise<void>;
9
- export {};
10
- //# sourceMappingURL=install.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DrG"}
@@ -1,67 +0,0 @@
1
- import chalk from 'chalk';
2
- import { readFileSync } from 'fs';
3
- import { getServiceConfig } from '../config/loader.js';
4
- import { exec } from '../utils/shell.js';
5
- import { exists, joinPath } from '../utils/files.js';
6
- import { createProcessManager } from '../utils/process-manager.js';
7
- /**
8
- * Install command - extract, npm install, restart process
9
- * This is called by the post-receive hook
10
- */
11
- export async function installCommand(serviceName, options = {}) {
12
- const ref = options.ref || 'main';
13
- console.log(chalk.blue(`Installing ${serviceName} (ref: ${ref})...`));
14
- const config = getServiceConfig(serviceName);
15
- const { server, packages, mainPackage, processName, processManager: pmType = 'pm2', pm2Home } = config;
16
- // Create process manager instance
17
- const pm = createProcessManager(pmType);
18
- // Extract each package using git archive
19
- for (const pkg of packages) {
20
- console.log(chalk.gray(` Extracting ${pkg}...`));
21
- try {
22
- exec(`git archive ${ref} ${pkg}/ | tar -x -C ${server.targetDir}/`, {
23
- cwd: server.bareRepo,
24
- silent: true
25
- });
26
- }
27
- catch {
28
- console.log(chalk.yellow(` Warning: Could not extract ${pkg}`));
29
- }
30
- }
31
- // Set ownership
32
- if (server.user) {
33
- exec(`chown -R ${server.user}:${server.user} ${server.targetDir}`, { silent: true });
34
- }
35
- // Install dependencies
36
- const mainPkgPath = joinPath(server.targetDir, mainPackage);
37
- console.log(chalk.gray(` Installing dependencies in ${mainPackage}...`));
38
- if (server.user) {
39
- exec(`sudo -u ${server.user} npm install --omit=dev`, { cwd: mainPkgPath });
40
- }
41
- else {
42
- exec('npm install --omit=dev', { cwd: mainPkgPath });
43
- }
44
- // Restart process
45
- console.log(chalk.gray(` Restarting ${pm.name} process ${processName}...`));
46
- if (server.user) {
47
- pm.asUser(server.user, `restart ${processName}`, { home: pm2Home });
48
- }
49
- else {
50
- pm.restart(processName, { home: pm2Home });
51
- }
52
- // Get version from package.json
53
- try {
54
- const pkgJsonPath = joinPath(mainPkgPath, 'package.json');
55
- if (exists(pkgJsonPath)) {
56
- const pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
57
- console.log(chalk.green(`✓ Installed ${serviceName} v${pkgJson.version}`));
58
- }
59
- else {
60
- console.log(chalk.green(`✓ Installed ${serviceName}`));
61
- }
62
- }
63
- catch {
64
- console.log(chalk.green(`✓ Installed ${serviceName}`));
65
- }
66
- }
67
- //# sourceMappingURL=install.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import type { ProcessManager, ProcessManagerOptions } from './process-manager.js';
2
- /**
3
- * PM2 Process Manager implementation
4
- */
5
- export declare class PM2ProcessManager implements ProcessManager {
6
- readonly name = "pm2";
7
- private buildEnv;
8
- restart(processName: string, options?: ProcessManagerOptions): void;
9
- list(options?: ProcessManagerOptions): string;
10
- save(options?: ProcessManagerOptions): void;
11
- show(processName: string, options?: ProcessManagerOptions): string;
12
- exists(processName: string, options?: ProcessManagerOptions): boolean;
13
- asUser(user: string, command: string, options?: ProcessManagerOptions): void;
14
- }
15
- /**
16
- * Restart PM2 process
17
- */
18
- export declare function pm2Restart(processName: string, pm2Home?: string): void;
19
- /**
20
- * Get PM2 process list
21
- */
22
- export declare function pm2List(pm2Home?: string): string;
23
- /**
24
- * Save PM2 process list
25
- */
26
- export declare function pm2Save(pm2Home?: string): void;
27
- /**
28
- * Get PM2 process info
29
- */
30
- export declare function pm2Show(processName: string, pm2Home?: string): string;
31
- /**
32
- * Check if PM2 process exists
33
- */
34
- export declare function pm2ProcessExists(processName: string, pm2Home?: string): boolean;
35
- /**
36
- * Run PM2 command as specific user (for server-side)
37
- */
38
- export declare function pm2AsUser(user: string, command: string, pm2Home?: string): void;
39
- //# sourceMappingURL=pm2.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../../src/utils/pm2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlF;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,QAAQ,CAAC,IAAI,SAAS;IAEtB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAKnE,IAAI,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAK7C,IAAI,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAK3C,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAKlE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO;IASrE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;CAI7E;AAID;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAGtE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAG9C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAG/E"}
package/dist/utils/pm2.js DELETED
@@ -1,83 +0,0 @@
1
- import { exec, execOutput } from './shell.js';
2
- /**
3
- * PM2 Process Manager implementation
4
- */
5
- export class PM2ProcessManager {
6
- name = 'pm2';
7
- buildEnv(options) {
8
- return options?.home ? `PM2_HOME=${options.home} ` : '';
9
- }
10
- restart(processName, options) {
11
- const env = this.buildEnv(options);
12
- exec(`${env}pm2 restart ${processName} --no-color`, { silent: options?.silent });
13
- }
14
- list(options) {
15
- const env = this.buildEnv(options);
16
- return execOutput(`${env}pm2 list --no-color`);
17
- }
18
- save(options) {
19
- const env = this.buildEnv(options);
20
- exec(`${env}pm2 save`, { silent: true });
21
- }
22
- show(processName, options) {
23
- const env = this.buildEnv(options);
24
- return execOutput(`${env}pm2 show ${processName} --no-color`);
25
- }
26
- exists(processName, options) {
27
- try {
28
- this.show(processName, options);
29
- return true;
30
- }
31
- catch {
32
- return false;
33
- }
34
- }
35
- asUser(user, command, options) {
36
- const env = this.buildEnv(options);
37
- exec(`sudo -u ${user} ${env}pm2 ${command} --no-color`, { silent: options?.silent });
38
- }
39
- }
40
- // Legacy function exports for backward compatibility
41
- /**
42
- * Restart PM2 process
43
- */
44
- export function pm2Restart(processName, pm2Home) {
45
- const pm2 = new PM2ProcessManager();
46
- pm2.restart(processName, { home: pm2Home });
47
- }
48
- /**
49
- * Get PM2 process list
50
- */
51
- export function pm2List(pm2Home) {
52
- const pm2 = new PM2ProcessManager();
53
- return pm2.list({ home: pm2Home });
54
- }
55
- /**
56
- * Save PM2 process list
57
- */
58
- export function pm2Save(pm2Home) {
59
- const pm2 = new PM2ProcessManager();
60
- pm2.save({ home: pm2Home });
61
- }
62
- /**
63
- * Get PM2 process info
64
- */
65
- export function pm2Show(processName, pm2Home) {
66
- const pm2 = new PM2ProcessManager();
67
- return pm2.show(processName, { home: pm2Home });
68
- }
69
- /**
70
- * Check if PM2 process exists
71
- */
72
- export function pm2ProcessExists(processName, pm2Home) {
73
- const pm2 = new PM2ProcessManager();
74
- return pm2.exists(processName, { home: pm2Home });
75
- }
76
- /**
77
- * Run PM2 command as specific user (for server-side)
78
- */
79
- export function pm2AsUser(user, command, pm2Home) {
80
- const pm2 = new PM2ProcessManager();
81
- pm2.asUser(user, command, { home: pm2Home });
82
- }
83
- //# sourceMappingURL=pm2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pm2.js","sourceRoot":"","sources":["../../src/utils/pm2.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Abstract interface for process managers (PM2, systemd, etc.)
3
- */
4
- export interface ProcessManager {
5
- /** Name of the process manager */
6
- readonly name: string;
7
- /** Restart a process by name */
8
- restart(processName: string, options?: ProcessManagerOptions): void;
9
- /** Get status/list of processes */
10
- list(options?: ProcessManagerOptions): string;
11
- /** Save current process state (for resurrection after reboot) */
12
- save(options?: ProcessManagerOptions): void;
13
- /** Get info about a specific process */
14
- show(processName: string, options?: ProcessManagerOptions): string;
15
- /** Check if a process exists */
16
- exists(processName: string, options?: ProcessManagerOptions): boolean;
17
- /** Run command as specific user (for server-side) */
18
- asUser(user: string, command: string, options?: ProcessManagerOptions): void;
19
- }
20
- /**
21
- * Options for process manager commands
22
- */
23
- export interface ProcessManagerOptions {
24
- /** Home directory for the process manager */
25
- home?: string;
26
- /** Run silently (no output) */
27
- silent?: boolean;
28
- }
29
- /**
30
- * Process manager types
31
- */
32
- export type ProcessManagerType = 'pm2' | 'systemd';
33
- /**
34
- * Factory function to create a process manager instance
35
- */
36
- export declare function createProcessManager(type: ProcessManagerType): ProcessManager;
37
- //# sourceMappingURL=process-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../../src/utils/process-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,gCAAgC;IAChC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAEpE,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;IAE9C,iEAAiE;IACjE,IAAI,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAE5C,wCAAwC;IACxC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;IAEnE,gCAAgC;IAChC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAEtE,qDAAqD;IACrD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC9E;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAY7E"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Factory function to create a process manager instance
3
- */
4
- export function createProcessManager(type) {
5
- switch (type) {
6
- case 'pm2':
7
- // Lazy import to avoid loading unused modules
8
- const { PM2ProcessManager } = require('./pm2.js');
9
- return new PM2ProcessManager();
10
- case 'systemd':
11
- const { SystemdProcessManager } = require('./systemd.js');
12
- return new SystemdProcessManager();
13
- default:
14
- throw new Error(`Unknown process manager type: ${type}`);
15
- }
16
- }
17
- //# sourceMappingURL=process-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../../src/utils/process-manager.ts"],"names":[],"mappings":"AA0CA;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,8CAA8C;YAC9C,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,KAAK,SAAS;YACZ,MAAM,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;YAC1D,OAAO,IAAI,qBAAqB,EAAE,CAAC;QACrC;YACE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -1,34 +0,0 @@
1
- import type { ProcessManager, ProcessManagerOptions } from './process-manager.js';
2
- /**
3
- * Systemd Process Manager implementation
4
- *
5
- * Uses systemctl to manage services. The processName is expected to be
6
- * a systemd service name (e.g., "myapp.service" or just "myapp").
7
- */
8
- export declare class SystemdProcessManager implements ProcessManager {
9
- readonly name = "systemd";
10
- private serviceName;
11
- restart(processName: string, options?: ProcessManagerOptions): void;
12
- list(options?: ProcessManagerOptions): string;
13
- save(options?: ProcessManagerOptions): void;
14
- show(processName: string, options?: ProcessManagerOptions): string;
15
- exists(processName: string, options?: ProcessManagerOptions): boolean;
16
- asUser(user: string, command: string, options?: ProcessManagerOptions): void;
17
- /**
18
- * Enable service to start on boot
19
- */
20
- enable(processName: string): void;
21
- /**
22
- * Disable service from starting on boot
23
- */
24
- disable(processName: string): void;
25
- /**
26
- * Reload systemd daemon (after changing unit files)
27
- */
28
- daemonReload(): void;
29
- /**
30
- * Check if service is active
31
- */
32
- isActive(processName: string): boolean;
33
- }
34
- //# sourceMappingURL=systemd.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"systemd.d.ts","sourceRoot":"","sources":["../../src/utils/systemd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlF;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,IAAI,aAAa;IAE1B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAKnE,IAAI,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAK7C,IAAI,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAM3C,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAKlE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO;IAUrE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAM5E;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjC;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKlC;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;CASvC"}