vps-deployer 1.0.0 → 1.0.3

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.
@@ -4,6 +4,6 @@ type ServiceConfig = {
4
4
  args: string[];
5
5
  workingDir: string;
6
6
  };
7
- export declare const createSystemdService: ({ serviceName, execPath, args, workingDir, }: ServiceConfig) => void;
7
+ export declare const createSystemdService: ({ serviceName, execPath, args, workingDir, }: ServiceConfig) => Promise<void>;
8
8
  export {};
9
9
  //# sourceMappingURL=create_systemd_service.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/create_systemd_service.helper.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,GAAG;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,8CAKlC,aAAa,SAyCf,CAAC"}
1
+ {"version":3,"file":"create_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/create_systemd_service.helper.ts"],"names":[],"mappings":"AAMA,KAAK,aAAa,GAAG;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAYF,eAAO,MAAM,oBAAoB,GAAU,8CAKxC,aAAa,kBAqCf,CAAC"}
@@ -1,39 +1,52 @@
1
- import { execSync } from "child_process";
1
+ import { spawn } from "child_process";
2
2
  import fs from "fs";
3
+ import path from "path";
4
+ import { getHomeDir } from "./get_home_dir.helper.js";
3
5
  import { writeToLogFile } from "./logging.helper.js";
4
- export const createSystemdService = ({ serviceName, execPath, args, workingDir, }) => {
5
- const serviceFilePath = `/etc/systemd/system/${serviceName}.service`;
6
- const execCmd = [execPath, ...args, "--daemon"].join(" ");
7
- const serviceContent = `
8
- [Unit]
6
+ const runSystemctl = (args) => {
7
+ return new Promise((resolve, reject) => {
8
+ const child = spawn("systemctl", ["--user", ...args], { stdio: "inherit" });
9
+ child.on("close", (code) => {
10
+ if (code === 0)
11
+ resolve();
12
+ else
13
+ reject(new Error(`systemctl --user ${args.join(" ")} exited with code ${code}`));
14
+ });
15
+ });
16
+ };
17
+ export const createSystemdService = async ({ serviceName, execPath, args, workingDir, }) => {
18
+ const userDir = path.join(getHomeDir(), ".config", "systemd", "user");
19
+ const serviceFilePath = path.join(userDir, `${serviceName}.service`);
20
+ const execCmd = `${execPath} daemon ${args.join(" ")}`;
21
+ const serviceContent = `[Unit]
9
22
  Description=VPS Deployer Service (${serviceName})
10
23
  After=network.target
11
-
12
24
  [Service]
13
25
  Type=simple
14
26
  ExecStart=${execCmd}
15
27
  WorkingDirectory=${workingDir}
16
28
  Restart=always
17
29
  RestartSec=5
18
- User=root
19
-
20
- # logs go to journald
21
30
  StandardOutput=journal
22
31
  StandardError=journal
23
-
24
32
  [Install]
25
- WantedBy=multi-user.target
26
- `;
33
+ WantedBy=default.target`;
27
34
  try {
28
- // 1. write service file
29
- fs.writeFileSync(serviceFilePath, serviceContent.trim());
30
- // 2. reload systemd
31
- execSync("systemctl daemon-reexec");
32
- execSync("systemctl daemon-reload");
33
- writeToLogFile(`Service file created at ${serviceFilePath}. Run "vps-deployer start" to enable and start it.`, { level: "INFO", source: "SYS" });
35
+ // Ensure user systemd dir exists
36
+ if (!fs.existsSync(userDir)) {
37
+ fs.mkdirSync(userDir, { recursive: true });
38
+ }
39
+ // Write service file (no sudo needed — user's own home dir)
40
+ fs.writeFileSync(serviceFilePath, serviceContent);
41
+ // Reload user systemd
42
+ await runSystemctl(["daemon-reload"]);
43
+ writeToLogFile(`Service file created at ${serviceFilePath}. Run "vps-deployer start" to enable and start it.`, {
44
+ level: "INFO",
45
+ source: "SYS",
46
+ });
34
47
  }
35
48
  catch (err) {
36
- writeToLogFile(`Systemd setup failed:${err.message}`, { level: "ERROR", source: "SYS" });
49
+ writeToLogFile(`Systemd setup failed: ${err.message}`, { level: "ERROR", source: "SYS" });
37
50
  throw err;
38
51
  }
39
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/create_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,UAAU,GACI,EAAE,EAAE;IAClB,MAAM,eAAe,GAAG,uBAAuB,WAAW,UAAU,CAAC;IAErE,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1D,MAAM,cAAc,GAAG;;oCAEW,WAAW;;;;;YAKnC,OAAO;mBACA,UAAU;;;;;;;;;;;CAW5B,CAAC;IAEA,IAAI,CAAC;QACH,wBAAwB;QACxB,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAEzD,oBAAoB;QACpB,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QACpC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAIpC,cAAc,CAAC,2BAA2B,eAAe,oDAAoD,EAAE,EAAC,KAAK,EAAC,MAAM,EAAE,MAAM,EAAC,KAAK,EAAC,CAAC,CAAC;IAC/I,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,cAAc,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,EAAC,EAAC,KAAK,EAAC,OAAO,EAAC,MAAM,EAAC,KAAK,EAAC,CAAC,CAAA;QAClF,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"create_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/create_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD,MAAM,YAAY,GAAG,CAAC,IAAc,EAAiB,EAAE;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;;gBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,UAAU,GACI,EAAE,EAAE;IAClB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,UAAU,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,GAAG,QAAQ,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEvD,MAAM,cAAc,GAAG;oCACW,WAAW;;;;YAInC,OAAO;mBACA,UAAU;;;;;;wBAML,CAAC;IAEvB,IAAI,CAAC;QACH,iCAAiC;QACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,4DAA4D;QAC5D,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAClD,sBAAsB;QACtB,MAAM,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACtC,cAAc,CAAC,2BAA2B,eAAe,oDAAoD,EAAE;YAC7G,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,cAAc,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const getHomeDir: () => string;
2
+ //# sourceMappingURL=get_home_dir.helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_home_dir.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/get_home_dir.helper.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,cAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import os from "os";
2
+ export const getHomeDir = () => os.homedir();
3
+ //# sourceMappingURL=get_home_dir.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_home_dir.helper.js","sourceRoot":"","sources":["../../src/helpers/get_home_dir.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const removeSystemdService: (serviceName: string) => void;
1
+ export declare const removeSystemdService: (serviceName: string) => Promise<void>;
2
2
  //# sourceMappingURL=remove_systemd_service.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/remove_systemd_service.helper.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,GAAI,aAAa,MAAM,SAevD,CAAC"}
1
+ {"version":3,"file":"remove_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/remove_systemd_service.helper.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,oBAAoB,GAAU,aAAa,MAAM,kBAc7D,CAAC"}
@@ -1,19 +1,31 @@
1
- import { execSync } from "child_process";
1
+ import { spawn } from "child_process";
2
2
  import fs from "fs";
3
+ import path from "path";
4
+ import { getHomeDir } from "./get_home_dir.helper.js";
3
5
  import { writeToLogFile } from "./logging.helper.js";
4
- export const removeSystemdService = (serviceName) => {
5
- const serviceFilePath = `/etc/systemd/system/${serviceName}.service`;
6
+ const runSystemctl = (args) => {
7
+ return new Promise((resolve, reject) => {
8
+ const child = spawn("systemctl", ["--user", ...args], { stdio: "inherit" });
9
+ child.on("close", (code) => {
10
+ if (code === 0)
11
+ resolve();
12
+ else
13
+ reject(new Error(`systemctl --user ${args.join(" ")} exited with code ${code}`));
14
+ });
15
+ });
16
+ };
17
+ export const removeSystemdService = async (serviceName) => {
18
+ const serviceFilePath = path.join(getHomeDir(), ".config", "systemd", "user", `${serviceName}.service`);
6
19
  try {
7
- execSync(`systemctl stop ${serviceName}`, { stdio: "inherit" });
8
- execSync(`systemctl disable ${serviceName}`, { stdio: "inherit" });
20
+ await runSystemctl(["stop", serviceName]);
21
+ await runSystemctl(["disable", serviceName]);
9
22
  if (fs.existsSync(serviceFilePath)) {
10
23
  fs.unlinkSync(serviceFilePath);
11
24
  }
12
- execSync("systemctl daemon-reload", { stdio: "inherit" });
25
+ await runSystemctl(["daemon-reload"]);
13
26
  writeToLogFile(`Service ${serviceName} removed`, { level: "INFO", source: "SYS" });
14
27
  }
15
28
  catch (err) {
16
- console.log(`Failed to remove service: ${err.message}`);
17
29
  writeToLogFile(`Failed to remove service: ${err.message}`, { level: "ERROR", source: "SYS" });
18
30
  throw err;
19
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remove_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/remove_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAE,EAAE;IAC1D,MAAM,eAAe,GAAG,uBAAuB,WAAW,UAAU,CAAC;IACrE,IAAI,CAAC;QACH,QAAQ,CAAC,kBAAkB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,QAAQ,CAAC,qBAAqB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;QACD,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,cAAc,CAAC,WAAW,WAAW,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACvD,cAAc,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"remove_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/remove_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,MAAM,YAAY,GAAG,CAAC,IAAc,EAAiB,EAAE;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;;gBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;IAChE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,UAAU,CAAC,CAAC;IACxG,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QAC1C,MAAM,YAAY,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACtC,cAAc,CAAC,WAAW,WAAW,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,cAAc,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const startSystemdService: (serviceName: string) => void;
1
+ export declare const startSystemdService: (serviceName: string) => Promise<void>;
2
2
  //# sourceMappingURL=start_systemd_service.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/start_systemd_service.helper.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM,SAsBtD,CAAC"}
1
+ {"version":3,"file":"start_systemd_service.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/start_systemd_service.helper.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,mBAAmB,GAAU,aAAa,MAAM,kBAsB5D,CAAC"}
@@ -1,15 +1,28 @@
1
- import { execSync } from "child_process";
1
+ import { spawn } from "child_process";
2
2
  import fs from "fs";
3
+ import path from "path";
4
+ import { getHomeDir } from "./get_home_dir.helper.js";
3
5
  import { writeToLogFile } from "./logging.helper.js";
4
- export const startSystemdService = (serviceName) => {
5
- const serviceFilePath = `/etc/systemd/system/${serviceName}.service`;
6
+ const runSystemctl = (args) => {
7
+ return new Promise((resolve, reject) => {
8
+ const child = spawn("systemctl", ["--user", ...args], { stdio: "inherit" });
9
+ child.on("close", (code) => {
10
+ if (code === 0)
11
+ resolve();
12
+ else
13
+ reject(new Error(`systemctl --user ${args.join(" ")} exited with code ${code}`));
14
+ });
15
+ });
16
+ };
17
+ export const startSystemdService = async (serviceName) => {
18
+ const serviceFilePath = path.join(getHomeDir(), ".config", "systemd", "user", `${serviceName}.service`);
6
19
  if (!fs.existsSync(serviceFilePath)) {
7
- throw new Error(`Service file not found at ${serviceFilePath}. Run "vps-deployer -w <dir> -p <port> -s <key>" first to generate it.`);
20
+ throw new Error(`Service file not found at ${serviceFilePath}. Run "vps-deployer config -w <dir> -p <port> -s <key>" first to generate it.`);
8
21
  }
9
22
  try {
10
- execSync("systemctl daemon-reload", { stdio: "inherit" });
11
- execSync(`systemctl enable ${serviceName}`, { stdio: "inherit" });
12
- execSync(`systemctl start ${serviceName}`, { stdio: "inherit" });
23
+ await runSystemctl(["daemon-reload"]);
24
+ await runSystemctl(["enable", serviceName]);
25
+ await runSystemctl(["start", serviceName]);
13
26
  writeToLogFile(`Service ${serviceName} enabled and started`, {
14
27
  level: "INFO",
15
28
  source: "SYS",
@@ -1 +1 @@
1
- {"version":3,"file":"start_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/start_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAE,EAAE;IACzD,MAAM,eAAe,GAAG,uBAAuB,WAAW,UAAU,CAAC;IACrE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,6BAA6B,eAAe,wEAAwE,CACrH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,QAAQ,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,QAAQ,CAAC,oBAAoB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,QAAQ,CAAC,mBAAmB,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,cAAc,CAAC,WAAW,WAAW,sBAAsB,EAAE;YAC3D,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,cAAc,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,EAAE;YACxD,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"start_systemd_service.helper.js","sourceRoot":"","sources":["../../src/helpers/start_systemd_service.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAG,KAAK,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,MAAM,YAAY,GAAG,CAAC,IAAc,EAAiB,EAAE;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;;gBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,WAAmB,EAAE,EAAE;IAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,WAAW,UAAU,CAAC,CAAC;IACxG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,6BAA6B,eAAe,+EAA+E,CAC5H,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QACtC,MAAM,YAAY,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAC5C,MAAM,YAAY,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QAC3C,cAAc,CAAC,WAAW,WAAW,sBAAsB,EAAE;YAC3D,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,cAAc,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,EAAE;YACxD,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ #!/usr/bin/env node
1
2
  export {};
2
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
+ #!/usr/bin/env node
1
2
  import { closeDB, initalizeDB } from "./db/db.js";
2
3
  import { setPort, setSessKey, setWorkDirPath } from "./helpers/arg.helper.js";
3
4
  import { createProxyAndLogConfigs } from "./helpers/config_files.helper.js";
4
5
  import { convertDateToIST } from "./helpers/date.helper.js";
5
6
  import { closeLogger, writeToLogFile } from "./helpers/logging.helper.js";
6
- import { getArgs } from "./utils/cli.js";
7
+ import { setupCLI } from "./utils/cli.js";
7
8
  import app, { initSessionAndRoutes } from "./app.js";
8
- import { createSystemdService } from "./helpers/create_systemd_service.helper.js";
9
9
  let server = null;
10
10
  let isShuttingDown = false;
11
11
  async function shutdown(signal) {
@@ -60,54 +60,36 @@ async function shutdown(signal) {
60
60
  setTimeout(() => {
61
61
  server?.closeAllConnections();
62
62
  process.exit(1);
63
- }, 10000);
63
+ }, 2 * 60 * 1000);
64
64
  }
65
- function main() {
66
- try {
67
- if (process.getuid && process.getuid() !== 0) {
68
- console.error("This command must be run as root. Use sudo.");
69
- process.exit(1);
70
- }
71
- const [path, port, sessKey, isDev, isDaemon] = getArgs();
72
- setWorkDirPath(path);
73
- setPort(port);
74
- setSessKey(sessKey);
75
- initalizeDB();
76
- createProxyAndLogConfigs();
77
- if (isDev || isDaemon) {
78
- initSessionAndRoutes(app);
79
- server = app.listen(port, "0.0.0.0", () => {
80
- writeToLogFile(`Server started`, {
81
- source: "SERVER",
82
- meta: { port },
83
- });
84
- });
85
- server.on("connection", (socket) => {
86
- // VERY IMP : SOMETIMES A OLD STALE CONN WHICH IS IN OS LAYER GETS TO NODE AFTER THE NODE INSTANCE RESTARTS SO SERVER CANT BE CLOSED PROPERLY LEADING INTO FORCE SHUTDOWN INSTEAD OF GRACEFUL
87
- // USE THIS SETTIMEOUT SO EVEN IF STALE CONN OPENS AGAiN IT GETS CLOSED
88
- socket.setTimeout(5000);
89
- socket.on("timeout", () => socket.destroy());
90
- });
91
- }
92
- else {
93
- createSystemdService({
94
- serviceName: "vps-deployer",
95
- execPath: process.argv[1] ?? "",
96
- args: process.argv.slice(2),
97
- workingDir: path,
98
- });
99
- writeToLogFile(`Systemd service file created. Run "vps-deployer start" to start the service.`, {
100
- source: "SYSTEM",
101
- });
102
- closeDB();
103
- closeLogger();
104
- console.log(`Systemd service file created. Run "vps-deployer start" to start the service.`);
105
- process.exit(0);
106
- }
107
- }
108
- catch (error) {
109
- console.log(error.message);
110
- process.exit(1);
65
+ function startServer(port) {
66
+ initSessionAndRoutes(app);
67
+ server = app.listen(port, "0.0.0.0", () => {
68
+ writeToLogFile(`Server started`, {
69
+ source: "SERVER",
70
+ meta: { port },
71
+ });
72
+ });
73
+ server.on("connection", (socket) => {
74
+ socket.setTimeout(5000);
75
+ socket.on("timeout", () => socket.destroy());
76
+ });
77
+ }
78
+ function initFromEnv() {
79
+ const mode = process.env.VPS_DEPLOYER_MODE;
80
+ const workDir = process.env.VPS_WORK_DIR;
81
+ const portStr = process.env.VPS_PORT;
82
+ const sessKey = process.env.VPS_SESS_KEY;
83
+ if (!mode || !workDir || !portStr || !sessKey)
84
+ return;
85
+ const port = Number.parseInt(portStr, 10);
86
+ setWorkDirPath(workDir);
87
+ setPort(port);
88
+ setSessKey(sessKey);
89
+ initalizeDB();
90
+ createProxyAndLogConfigs();
91
+ if (mode === "dev" || mode === "daemon") {
92
+ startServer(port);
111
93
  }
112
94
  }
113
95
  process.on("SIGINT", () => shutdown("SIGINT"));
@@ -128,5 +110,6 @@ process.on("unhandledRejection", (reason) => {
128
110
  });
129
111
  shutdown("unhandledRejection");
130
112
  });
131
- main();
113
+ setupCLI();
114
+ initFromEnv();
132
115
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const getArgs: () => [path: string, port: number, sessionkey: string, isDev: boolean, isDaemon: boolean];
1
+ export declare const setupCLI: () => void;
2
2
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,OAAO,QAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAC,UAAU,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAE,OAAO,CA2DvG,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,QAAQ,YA+FpB,CAAC"}
package/dist/utils/cli.js CHANGED
@@ -2,6 +2,11 @@ import { Command, Option } from "commander";
2
2
  import fs from "fs";
3
3
  import { removeSystemdService } from "../helpers/remove_systemd_service.helper.js";
4
4
  import { startSystemdService } from "../helpers/start_systemd_service.helper.js";
5
+ import { closeLogger } from "../helpers/logging.helper.js";
6
+ import { setPort, setSessKey, setWorkDirPath } from "../helpers/arg.helper.js";
7
+ import { closeDB, initalizeDB } from "../db/db.js";
8
+ import { createProxyAndLogConfigs } from "../helpers/config_files.helper.js";
9
+ import { createSystemdService } from "../helpers/create_systemd_service.helper.js";
5
10
  const checkDirExists = (dirPath) => {
6
11
  return fs.existsSync(dirPath);
7
12
  };
@@ -14,28 +19,57 @@ const checkArgsValidation = (path, port, sessionKey) => {
14
19
  if (Number.isNaN(port) || port >= 50000 || port <= 1024)
15
20
  throw new Error(`${port} is not a valid port curr limitation is 1024-50000.`);
16
21
  };
17
- export const getArgs = () => {
22
+ const parseCommonOptions = (program) => {
23
+ const opts = program.opts();
24
+ const workingDir = opts.workingDir.toString();
25
+ const port = Number.parseInt(opts.port, 10);
26
+ const sessionKey = opts.sessionKey.toString();
27
+ checkArgsValidation(workingDir, port, sessionKey);
28
+ return { workingDir, port, sessionKey };
29
+ };
30
+ export const setupCLI = () => {
18
31
  const program = new Command();
32
+ program.description("a utility that helps u auto deploy things").version("1.2.0");
33
+ // ---- config subcommand ----
19
34
  program
20
- .description("a utility that helps u auto deploy things")
21
- .version("1.0.0")
35
+ .command("config")
36
+ .description("generate systemd service file, database, and configs")
22
37
  .requiredOption("-w, --working-dir <dir>", "sets the working directory where all the projects will be fetched")
23
38
  .requiredOption("-p, --port <port>", "sets the port of the server")
24
39
  .requiredOption("-s, --session-key <sessKey>", "sets the session key of the server")
25
- .option("--dev", "run in development mode (foreground, no systemd)")
26
- .addOption(new Option('--daemon').hideHelp())
27
- .action(() => { });
40
+ .action(async (_opts) => {
41
+ try {
42
+ const { workingDir, port, sessionKey } = parseCommonOptions(program);
43
+ setWorkDirPath(workingDir);
44
+ setPort(port);
45
+ setSessKey(sessionKey);
46
+ initalizeDB();
47
+ createProxyAndLogConfigs();
48
+ await createSystemdService({
49
+ serviceName: "vps-deployer",
50
+ execPath: process.argv[1] ?? "",
51
+ args: process.argv.slice(3), // skip "config"
52
+ workingDir,
53
+ });
54
+ console.log("Please run: loginctl enable-linger $USER to persists the server");
55
+ console.log(`Systemd service file created. Run "vps-deployer start" to start the service.`);
56
+ closeDB();
57
+ await closeLogger();
58
+ process.exit(0);
59
+ }
60
+ catch (err) {
61
+ console.log(err.message);
62
+ process.exit(1);
63
+ }
64
+ });
65
+ // ---- start subcommand ----
28
66
  program
29
67
  .command("start")
30
68
  .description("enable and start the vps-deployer systemd service (runs as daemon)")
31
- .action(() => {
32
- if (process.getuid && process.getuid() !== 0) {
33
- console.error("This command must be run as root. Use sudo.");
34
- process.exit(1);
35
- }
69
+ .action(async () => {
36
70
  try {
37
- startSystemdService("vps-deployer");
38
- console.log("vps-deployer service started. Check logs: journalctl -u vps-deployer -f");
71
+ await startSystemdService("vps-deployer");
72
+ console.log("vps-deployer service started. Check logs: journalctl --user -u vps-deployer -f");
39
73
  process.exit(0);
40
74
  }
41
75
  catch (err) {
@@ -43,26 +77,52 @@ export const getArgs = () => {
43
77
  process.exit(1);
44
78
  }
45
79
  });
80
+ // ---- uninstall subcommand ----
46
81
  program
47
82
  .command("uninstall")
48
- .description("stop, disable, and remove the vps-deployer systemd service [Dosen't delete the working folder]")
49
- .action(() => {
50
- if (process.getuid && process.getuid() !== 0) {
51
- console.error("This command must be run as root. Use sudo.");
83
+ .description("stop, disable, and remove the vps-deployer systemd service [Doesn't delete the working folder]")
84
+ .action(async () => {
85
+ try {
86
+ await removeSystemdService("vps-deployer");
87
+ console.log("vps-deployer service removed please remove the folder manually.");
88
+ process.exit(0);
89
+ }
90
+ catch (err) {
91
+ console.error(`Failed to remove service: ${err.message}`);
52
92
  process.exit(1);
53
93
  }
54
- removeSystemdService("vps-deployer");
55
- console.log("vps-deployer service removed.");
56
- process.exit(0);
94
+ });
95
+ // ---- dev subcommand ----
96
+ program
97
+ .command("dev")
98
+ .description("run in development mode (foreground, no systemd)")
99
+ .requiredOption("-w, --working-dir <dir>", "sets the working directory where all the projects will be fetched")
100
+ .requiredOption("-p, --port <port>", "sets the port of the server")
101
+ .requiredOption("-s, --session-key <sessKey>", "sets the session key of the server")
102
+ .action(async (_opts) => {
103
+ const { workingDir, port, sessionKey } = parseCommonOptions(program);
104
+ // Signal to index.ts to run in dev mode
105
+ process.env.VPS_DEPLOYER_MODE = "dev";
106
+ process.env.VPS_WORK_DIR = workingDir;
107
+ process.env.VPS_PORT = port.toString();
108
+ process.env.VPS_SESS_KEY = sessionKey;
109
+ });
110
+ // ---- daemon subcommand (hidden, used by systemd ExecStart) ----
111
+ program
112
+ .command("daemon")
113
+ .description("")
114
+ .requiredOption("-w, --working-dir <dir>", "")
115
+ .requiredOption("-p, --port <port>", "")
116
+ .requiredOption("-s, --session-key <sessKey>", "")
117
+ .addOption(new Option("--daemon", "").hideHelp())
118
+ .action(async (_opts) => {
119
+ const { workingDir, port, sessionKey } = parseCommonOptions(program);
120
+ // Signal to index.ts to run in daemon mode
121
+ process.env.VPS_DEPLOYER_MODE = "daemon";
122
+ process.env.VPS_WORK_DIR = workingDir;
123
+ process.env.VPS_PORT = port.toString();
124
+ process.env.VPS_SESS_KEY = sessionKey;
57
125
  });
58
126
  program.parse();
59
- const requiredOptions = program.opts();
60
- const workingDir = requiredOptions["workingDir"].toString();
61
- const port = Number.parseInt(requiredOptions["port"], 10);
62
- const sessionKey = requiredOptions['sessionKey'].toString();
63
- const isDev = requiredOptions.dev ?? false;
64
- const isDaemon = requiredOptions.daemon ?? false;
65
- checkArgsValidation(workingDir, port, sessionKey);
66
- return [workingDir, port, sessionKey, isDev, isDaemon];
67
127
  };
68
128
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vps-deployer",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "A lightweight, self-hosted continuous deployment (CD) system with a built-in web UI — manages projects on your VPS, accepts GitHub webhooks for automatic deployments, and sends real-time email notifications on deployment events",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",