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,79 +0,0 @@
1
- import { exec, execOutput } from './shell.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 class SystemdProcessManager {
9
- name = 'systemd';
10
- serviceName(name) {
11
- return name.endsWith('.service') ? name : `${name}.service`;
12
- }
13
- restart(processName, options) {
14
- const service = this.serviceName(processName);
15
- exec(`sudo systemctl restart ${service}`, { silent: options?.silent });
16
- }
17
- list(options) {
18
- // List all running services
19
- return execOutput('systemctl list-units --type=service --state=running --no-pager');
20
- }
21
- save(options) {
22
- // systemd auto-saves, but we can enable the service for boot
23
- // This is a no-op for systemd as it manages state automatically
24
- console.log('Note: systemd manages service state automatically.');
25
- }
26
- show(processName, options) {
27
- const service = this.serviceName(processName);
28
- return execOutput(`systemctl status ${service} --no-pager`);
29
- }
30
- exists(processName, options) {
31
- const service = this.serviceName(processName);
32
- try {
33
- execOutput(`systemctl cat ${service} 2>/dev/null`);
34
- return true;
35
- }
36
- catch {
37
- return false;
38
- }
39
- }
40
- asUser(user, command, options) {
41
- // For systemd, we use systemctl directly (no user switching needed)
42
- // The 'command' here should be a systemctl action like 'restart myapp'
43
- exec(`sudo systemctl ${command}`, { silent: options?.silent });
44
- }
45
- /**
46
- * Enable service to start on boot
47
- */
48
- enable(processName) {
49
- const service = this.serviceName(processName);
50
- exec(`sudo systemctl enable ${service}`, { silent: true });
51
- }
52
- /**
53
- * Disable service from starting on boot
54
- */
55
- disable(processName) {
56
- const service = this.serviceName(processName);
57
- exec(`sudo systemctl disable ${service}`, { silent: true });
58
- }
59
- /**
60
- * Reload systemd daemon (after changing unit files)
61
- */
62
- daemonReload() {
63
- exec('sudo systemctl daemon-reload', { silent: true });
64
- }
65
- /**
66
- * Check if service is active
67
- */
68
- isActive(processName) {
69
- const service = this.serviceName(processName);
70
- try {
71
- const result = execOutput(`systemctl is-active ${service}`);
72
- return result.trim() === 'active';
73
- }
74
- catch {
75
- return false;
76
- }
77
- }
78
- }
79
- //# sourceMappingURL=systemd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"systemd.js","sourceRoot":"","sources":["../../src/utils/systemd.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,SAAS,CAAC;IAElB,WAAW,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,WAAmB,EAAE,OAA+B;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,0BAA0B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,OAA+B;QAClC,4BAA4B;QAC5B,OAAO,UAAU,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,OAA+B;QAClC,6DAA6D;QAC7D,gEAAgE;QAChE,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC,WAAmB,EAAE,OAA+B;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,UAAU,CAAC,oBAAoB,OAAO,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,WAAmB,EAAE,OAA+B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,UAAU,CAAC,iBAAiB,OAAO,cAAc,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,OAA+B;QACnE,oEAAoE;QACpE,uEAAuE;QACvE,IAAI,CAAC,kBAAkB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAmB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,yBAAyB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,WAAmB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,0BAA0B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,WAAmB;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
@@ -1,55 +0,0 @@
1
- #!/bin/bash
2
- # Post-receive hook template
3
- # Copy this to your bare repo: hooks/post-receive
4
- # Or use: git-deploy init <service>
5
-
6
- set -e
7
-
8
- # Configuration - adjust these values
9
- SERVICE="my-service"
10
- TARGET_DIR="/opt/myapp/my-service"
11
- LOG_FILE="/var/log/deploy-my-service.log"
12
- PM2_NAME="my-service"
13
- PM2_HOME="/opt/myapp/.pm2"
14
- PACKAGES=("my-service")
15
- MAIN_PKG="my-service"
16
- USER="myapp"
17
-
18
- log() {
19
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | sudo tee -a "$LOG_FILE"
20
- }
21
-
22
- log "=== Deployment started ==="
23
-
24
- while read oldrev newrev refname; do
25
- BRANCH=$(echo "$refname" | sed 's|refs/heads/||')
26
- log "Received push to branch: $BRANCH"
27
-
28
- if [ "$BRANCH" != "main" ] && [ "$BRANCH" != "master" ]; then
29
- log "Ignoring non-main branch"
30
- continue
31
- fi
32
-
33
- # Extract packages using git archive
34
- for pkg in "${PACKAGES[@]}"; do
35
- log "Extracting $pkg..."
36
- git archive "$BRANCH" "$pkg/" 2>/dev/null | sudo tar -x -C "$TARGET_DIR/" || true
37
- done
38
-
39
- # Set ownership
40
- sudo chown -R $USER:$USER "$TARGET_DIR"
41
-
42
- # Install dependencies
43
- log "Installing dependencies..."
44
- cd "$TARGET_DIR/$MAIN_PKG"
45
- sudo -u $USER npm install --omit=dev 2>&1 | sudo tee -a "$LOG_FILE"
46
-
47
- # Restart PM2
48
- log "Restarting $PM2_NAME..."
49
- sudo -u $USER PM2_HOME=$PM2_HOME pm2 restart "$PM2_NAME" --no-color 2>&1 | sudo tee -a "$LOG_FILE"
50
-
51
- log "Current status:"
52
- sudo -u $USER PM2_HOME=$PM2_HOME pm2 list --no-color 2>&1 | sudo tee -a "$LOG_FILE"
53
- done
54
-
55
- log "=== Deployment completed ==="