easyoref 1.21.8 → 1.21.11

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/bin.d.ts CHANGED
@@ -5,9 +5,10 @@
5
5
  * easyoref — run the bot (foreground)
6
6
  * easyoref run — same as above
7
7
  * easyoref init — interactive setup wizard
8
+ * easyoref update — update to latest version
8
9
  * easyoref install — create systemd service + start
9
10
  * easyoref uninstall — remove systemd service
10
- * easyoref start — start service (install if needed)
11
+ * easyoref start — start service
11
12
  * easyoref stop — stop service
12
13
  * easyoref restart — restart service
13
14
  * easyoref status — show service status
package/dist/bin.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG"}
package/dist/bin.js CHANGED
@@ -5,14 +5,16 @@
5
5
  * easyoref — run the bot (foreground)
6
6
  * easyoref run — same as above
7
7
  * easyoref init — interactive setup wizard
8
+ * easyoref update — update to latest version
8
9
  * easyoref install — create systemd service + start
9
10
  * easyoref uninstall — remove systemd service
10
- * easyoref start — start service (install if needed)
11
+ * easyoref start — start service
11
12
  * easyoref stop — stop service
12
13
  * easyoref restart — restart service
13
14
  * easyoref status — show service status
14
15
  * easyoref logs — follow service logs
15
16
  */
17
+ import { execSync } from "node:child_process";
16
18
  const command = process.argv[2];
17
19
  switch (command) {
18
20
  case "init": {
@@ -20,6 +22,32 @@ switch (command) {
20
22
  await init();
21
23
  break;
22
24
  }
25
+ case "update": {
26
+ console.log("\n🚀 Updating EasyOref...\n");
27
+ try {
28
+ console.log(" → sudo npm install -g easyoref@latest");
29
+ execSync("sudo npm install -g easyoref@latest", { stdio: "inherit" });
30
+ // Ensure redis is running
31
+ try {
32
+ execSync("docker inspect easyoref-redis --format '{{.State.Running}}' 2>/dev/null | grep -q true", { stdio: "pipe" });
33
+ console.log("\n → redis already running");
34
+ }
35
+ catch {
36
+ console.log("\n → docker run redis");
37
+ execSync("docker run -d --name easyoref-redis --restart unless-stopped " +
38
+ "-v easyoref-redis:/data " +
39
+ "redis:7-alpine redis-server --appendonly yes --maxmemory 64mb --maxmemory-policy allkeys-lru", { stdio: "inherit" });
40
+ }
41
+ console.log("\n → sudo systemctl restart easyoref");
42
+ execSync("sudo systemctl restart easyoref", { stdio: "inherit" });
43
+ console.log("\n✅ EasyOref updated successfully!");
44
+ }
45
+ catch (err) {
46
+ console.error("\n❌ Update failed:", err);
47
+ process.exit(1);
48
+ }
49
+ break;
50
+ }
23
51
  case "install": {
24
52
  const svc = await import("./service.js");
25
53
  svc.install();
@@ -63,11 +91,12 @@ switch (command) {
63
91
  Usage:
64
92
  easyoref Run the bot (foreground)
65
93
  easyoref init Interactive setup wizard
94
+ easyoref update Update to latest version
66
95
 
67
96
  Service management:
68
97
  easyoref install Create systemd service & start
69
98
  easyoref uninstall Remove systemd service
70
- easyoref start Start service (auto-install if needed)
99
+ easyoref start Start service
71
100
  easyoref stop Stop service
72
101
  easyoref restart Restart service
73
102
  easyoref status Show service status
@@ -78,5 +107,4 @@ switch (command) {
78
107
  default:
79
108
  await import("./bot.js");
80
109
  }
81
- export {};
82
110
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG;AAEH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,MAAM,CAAC,CAAC,CAAC;QACZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,IAAI,EAAE,CAAC;QACb,MAAM;IACR,CAAC;IAED,KAAK,SAAS,CAAC,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,MAAM;IACR,CAAC;IAED,KAAK,WAAW,CAAC,CAAC,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM;IACR,CAAC;IAED,KAAK,OAAO,CAAC,CAAC,CAAC;QACb,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM;IACR,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,MAAM;IACR,CAAC;IAED,KAAK,SAAS,CAAC,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,EAAE,CAAC;QACd,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,MAAM;IACR,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,MAAM;IACR,CAAC;IAED,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI;QACP,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;CAef,CAAC,CAAC;QACC,MAAM;IAER,KAAK,KAAK,CAAC;IACX;QACE,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * EasyOref — systemd service management (à la Homebridge)
3
+ *
4
+ * easyoref install — create & enable systemd service, then start
5
+ * easyoref uninstall — stop & remove systemd service
6
+ * easyoref start — start the service (install first if needed)
7
+ * easyoref stop — stop the service
8
+ * easyoref restart — restart the service
9
+ * easyoref status — show service status
10
+ * easyoref logs — follow journal logs
11
+ */
12
+ import { execSync, spawnSync } from "node:child_process";
13
+ import { existsSync, writeFileSync } from "node:fs";
14
+ import { homedir } from "node:os";
15
+ import { join } from "node:path";
16
+ const SERVICE_NAME = "easyoref";
17
+ const UNIT_PATH = `/etc/systemd/system/${SERVICE_NAME}.service`;
18
+ const CONFIG_DIR = join(homedir(), ".easyoref");
19
+ const CONFIG_PATH = join(CONFIG_DIR, "config.yaml");
20
+ function whichBin() {
21
+ try {
22
+ return execSync("which easyoref", { encoding: "utf-8" }).trim();
23
+ }
24
+ catch {
25
+ // Fallback: resolve from npm global
26
+ try {
27
+ return execSync("npm bin -g", { encoding: "utf-8" }).trim() + "/easyoref";
28
+ }
29
+ catch {
30
+ return "/usr/bin/easyoref";
31
+ }
32
+ }
33
+ }
34
+ function whichNode() {
35
+ try {
36
+ return execSync("which node", { encoding: "utf-8" }).trim();
37
+ }
38
+ catch {
39
+ return "/usr/bin/node";
40
+ }
41
+ }
42
+ function isRoot() {
43
+ return process.getuid?.() === 0;
44
+ }
45
+ function sudoExec(cmd) {
46
+ const result = spawnSync("sudo", cmd.split(" "), {
47
+ stdio: "inherit",
48
+ });
49
+ if (result.status !== 0) {
50
+ console.error(`❌ Command failed: sudo ${cmd}`);
51
+ process.exit(1);
52
+ }
53
+ }
54
+ function exec(cmd) {
55
+ const result = spawnSync(cmd.split(" ")[0], cmd.split(" ").slice(1), {
56
+ stdio: "inherit",
57
+ });
58
+ if (result.status !== 0) {
59
+ process.exit(result.status ?? 1);
60
+ }
61
+ }
62
+ function isInstalled() {
63
+ return existsSync(UNIT_PATH);
64
+ }
65
+ function generateUnit() {
66
+ const bin = whichBin();
67
+ const node = whichNode();
68
+ const user = process.env.USER || process.env.LOGNAME || "pi";
69
+ const home = homedir();
70
+ return `[Unit]
71
+ Description=EasyOref Telegram Bot
72
+ After=network-online.target
73
+ Wants=network-online.target
74
+
75
+ [Service]
76
+ Type=simple
77
+ User=${user}
78
+ Environment=HOME=${home}
79
+ Environment=NODE_ENV=production
80
+ ExecStart=${node} ${bin} run
81
+ WorkingDirectory=${home}
82
+ Restart=always
83
+ RestartSec=10
84
+
85
+ [Install]
86
+ WantedBy=multi-user.target
87
+ `;
88
+ }
89
+ // ── Commands ─────────────────────────────────────────────
90
+ export function install() {
91
+ if (!existsSync(CONFIG_PATH)) {
92
+ console.error(`❌ Config not found at ${CONFIG_PATH}`);
93
+ console.error(` Run: easyoref init`);
94
+ process.exit(1);
95
+ }
96
+ console.log(`📦 Installing ${SERVICE_NAME} systemd service...`);
97
+ const unit = generateUnit();
98
+ const tmpPath = `/tmp/${SERVICE_NAME}.service`;
99
+ writeFileSync(tmpPath, unit);
100
+ sudoExec(`cp ${tmpPath} ${UNIT_PATH}`);
101
+ sudoExec("systemctl daemon-reload");
102
+ sudoExec(`systemctl enable ${SERVICE_NAME}`);
103
+ sudoExec(`systemctl start ${SERVICE_NAME}`);
104
+ console.log(`✅ Service installed and started`);
105
+ console.log(` Config: ${CONFIG_PATH}`);
106
+ console.log(` Logs: easyoref logs`);
107
+ console.log(` Status: easyoref status`);
108
+ }
109
+ export function uninstall() {
110
+ if (!isInstalled()) {
111
+ console.log("ℹ️ Service not installed");
112
+ return;
113
+ }
114
+ console.log(`🗑 Removing ${SERVICE_NAME} systemd service...`);
115
+ sudoExec(`systemctl stop ${SERVICE_NAME}`);
116
+ sudoExec(`systemctl disable ${SERVICE_NAME}`);
117
+ sudoExec(`rm ${UNIT_PATH}`);
118
+ sudoExec("systemctl daemon-reload");
119
+ console.log("✅ Service removed");
120
+ }
121
+ export function start() {
122
+ if (!isInstalled()) {
123
+ console.log("Service not installed — installing first...");
124
+ install();
125
+ return;
126
+ }
127
+ sudoExec(`systemctl start ${SERVICE_NAME}`);
128
+ console.log("✅ Started");
129
+ }
130
+ export function stop() {
131
+ if (!isInstalled()) {
132
+ console.log("ℹ️ Service not installed");
133
+ return;
134
+ }
135
+ sudoExec(`systemctl stop ${SERVICE_NAME}`);
136
+ console.log("✅ Stopped");
137
+ }
138
+ export function restart() {
139
+ if (!isInstalled()) {
140
+ console.log("Service not installed — installing first...");
141
+ install();
142
+ return;
143
+ }
144
+ sudoExec(`systemctl restart ${SERVICE_NAME}`);
145
+ console.log("✅ Restarted");
146
+ }
147
+ export function status() {
148
+ if (!isInstalled()) {
149
+ console.log("ℹ️ Service not installed. Run: easyoref install");
150
+ return;
151
+ }
152
+ spawnSync("systemctl", ["status", SERVICE_NAME, "--no-pager"], {
153
+ stdio: "inherit",
154
+ });
155
+ }
156
+ export function logs() {
157
+ if (!isInstalled()) {
158
+ console.log("ℹ️ Service not installed. Run: easyoref install");
159
+ return;
160
+ }
161
+ spawnSync("journalctl", ["-u", SERVICE_NAME, "-f", "--no-pager", "-o", "cat"], {
162
+ stdio: "inherit",
163
+ });
164
+ }
165
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easyoref",
3
- "version": "1.21.8",
3
+ "version": "1.21.11",
4
4
  "description": "Real-time Israeli civil defense alerts → Telegram, filtered by your location",
5
5
  "type": "module",
6
6
  "bin": {