about-system 0.0.39 → 0.0.41
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/about-system-cli.js +108 -96
- package/dist/about-system-cli.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/system-info-api-DCP1ZJVR.js +2237 -0
- package/dist/{system-info-api-J8OqC6YU.js.map → system-info-api-DCP1ZJVR.js.map} +1 -1
- package/dist/system-info-api.d.ts +20 -0
- package/dist/system-info-api.js +1 -1
- package/package.json +1 -1
- package/src/about-system-cli.ts +70 -20
- package/src/info/hardware.ts +219 -31
- package/src/system-info-api.ts +5 -1
- package/src/systeminfo-types.d.ts +33 -6
- package/dist/cpu-geekbench-1k.json +0 -1
- package/dist/system-info-api-J8OqC6YU.js +0 -2148
package/dist/about-system-cli.js
CHANGED
|
@@ -1,155 +1,167 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { fileURLToPath as
|
|
6
|
-
import { g as $, a as C, b as
|
|
7
|
-
const
|
|
8
|
-
function
|
|
2
|
+
import g from "os";
|
|
3
|
+
import r from "fs";
|
|
4
|
+
import m from "path";
|
|
5
|
+
import { fileURLToPath as F } from "url";
|
|
6
|
+
import { g as $, a as C, b as S, C as w, S as I, c as y, D as b } from "./system-info-api-DCP1ZJVR.js";
|
|
7
|
+
const E = F(import.meta.url), p = g.platform() === "win32";
|
|
8
|
+
function j(e, s, o) {
|
|
9
9
|
if (!s || s.trim() === "") return "";
|
|
10
|
-
const
|
|
10
|
+
const l = y[o.colors[e]] || y.reset, i = o.display.show_emojis && o.emojis[e] || "";
|
|
11
11
|
if (e === "battery" && o.display.show_emojis) {
|
|
12
|
-
const
|
|
13
|
-
return `${
|
|
12
|
+
const c = s.includes("+") ? o.emojis.battery_charging : o.emojis.battery;
|
|
13
|
+
return `${l}${c}${s}`;
|
|
14
14
|
}
|
|
15
15
|
if (e === "ports" && o.colors[e] === "multicolor" && s) {
|
|
16
|
-
let
|
|
17
|
-
const
|
|
18
|
-
return
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
}),
|
|
16
|
+
let t = ` ${o.display.show_emojis ? o.emojis.ports : ""}`;
|
|
17
|
+
const n = s.split(" "), a = [31, 32, 33, 34, 35, 36];
|
|
18
|
+
return n.forEach((f, h) => {
|
|
19
|
+
const u = a[h % a.length];
|
|
20
|
+
t += `\x1B[${u}m${f}\x1B[0m `;
|
|
21
|
+
}), t.trim();
|
|
22
22
|
}
|
|
23
23
|
if (e === "pacman" && o.colors[e] === "multicolor" && s) {
|
|
24
|
-
const
|
|
25
|
-
return `${
|
|
24
|
+
const c = o.display.show_emojis ? o.emojis.pacman : "";
|
|
25
|
+
return `${l}${c}${s}`;
|
|
26
26
|
}
|
|
27
|
-
return `${
|
|
27
|
+
return `${l}${i}${s}`;
|
|
28
28
|
}
|
|
29
|
-
function
|
|
30
|
-
return e
|
|
29
|
+
function P(e, s) {
|
|
30
|
+
if (s <= 0) return e ? [e] : [];
|
|
31
|
+
const o = [];
|
|
32
|
+
let l = "", i = 0, c = "";
|
|
33
|
+
for (let t = 0; t < e.length; t++) {
|
|
34
|
+
const n = e[t];
|
|
35
|
+
if (n === "\x1B" && e[t + 1] === "[") {
|
|
36
|
+
let u = n, d = t + 1;
|
|
37
|
+
for (; d < e.length && e[d] !== "m"; )
|
|
38
|
+
u += e[d], d++;
|
|
39
|
+
d < e.length && (u += e[d]), l += u, c = /\x1b\[0m/.test(u) ? "" : u, t = d;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
let a = n, f = 1;
|
|
43
|
+
const h = e.charCodeAt(t);
|
|
44
|
+
h >= 55296 && h <= 56319 && t + 1 < e.length && (a = n + e[t + 1], f = 2, t++), i >= s && (o.push(l), l = c, i = 0), l += a, i += f;
|
|
45
|
+
}
|
|
46
|
+
return l && o.push(l), o;
|
|
31
47
|
}
|
|
32
|
-
async function
|
|
33
|
-
const s = C(), o = e || s.display_order,
|
|
48
|
+
async function _(e = null) {
|
|
49
|
+
const s = C(), o = e || s.display_order, l = await $();
|
|
34
50
|
if (s.display.single_line) {
|
|
35
|
-
const
|
|
36
|
-
for (const
|
|
37
|
-
for (const f of
|
|
38
|
-
const
|
|
39
|
-
|
|
51
|
+
const n = [];
|
|
52
|
+
for (const a of o)
|
|
53
|
+
for (const f of a) {
|
|
54
|
+
const h = l[f], u = j(f, h, s);
|
|
55
|
+
u && u.trim() && n.push(u);
|
|
40
56
|
}
|
|
41
|
-
|
|
57
|
+
n.length > 0 && console.log(n.join(" ") + y.reset);
|
|
42
58
|
return;
|
|
43
59
|
}
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const f = a[l], m = b(l, f, s);
|
|
50
|
-
if (m && m.trim()) {
|
|
51
|
-
const h = _(m).length, F = _(t).length;
|
|
52
|
-
t && F + h + 1 > c ? (n.push(t), t = m) : t = t ? `${t} ${m}` : m;
|
|
53
|
-
}
|
|
60
|
+
const i = s.display.line_wrap_length, c = [];
|
|
61
|
+
for (const n of o)
|
|
62
|
+
for (const a of n) {
|
|
63
|
+
const f = l[a], h = j(a, f, s);
|
|
64
|
+
h && h.trim() && c.push(h);
|
|
54
65
|
}
|
|
55
|
-
t
|
|
56
|
-
|
|
66
|
+
const t = P(c.join(" "), i);
|
|
67
|
+
t.length > 0 ? t.forEach((n) => {
|
|
68
|
+
console.log(n + y.reset);
|
|
57
69
|
}) : s.advanced.debug && console.log("No system information could be displayed");
|
|
58
70
|
}
|
|
59
|
-
function
|
|
71
|
+
function O(e) {
|
|
60
72
|
const s = C();
|
|
61
73
|
if (e.includes("--settings-init"))
|
|
62
|
-
return
|
|
74
|
+
return S(b) ? console.log("Settings initialized with defaults") : console.log("Failed to initialize settings"), !0;
|
|
63
75
|
if (e.includes("--settings-show"))
|
|
64
76
|
return console.log("Current settings:"), console.log(JSON.stringify(s, null, 2)), !0;
|
|
65
77
|
if (e.includes("--settings-reset"))
|
|
66
|
-
return
|
|
78
|
+
return S(b) ? console.log("Settings reset to defaults") : console.log("Failed to reset settings"), !0;
|
|
67
79
|
if (e.includes("--refresh")) {
|
|
68
80
|
try {
|
|
69
|
-
|
|
70
|
-
} catch (
|
|
71
|
-
console.error("Error clearing cache:",
|
|
81
|
+
r.existsSync(w) && (r.unlinkSync(w), console.log("Cache cleared"));
|
|
82
|
+
} catch (l) {
|
|
83
|
+
console.error("Error clearing cache:", l.message);
|
|
72
84
|
}
|
|
73
85
|
return !0;
|
|
74
86
|
}
|
|
75
87
|
const o = e.indexOf("--set");
|
|
76
88
|
if (o !== -1 && e[o + 1] && e[o + 2]) {
|
|
77
|
-
const
|
|
89
|
+
const l = e[o + 1], i = e[o + 2];
|
|
78
90
|
try {
|
|
79
|
-
const
|
|
80
|
-
let
|
|
81
|
-
for (let
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
} catch (
|
|
85
|
-
console.error("Error setting value:",
|
|
91
|
+
const c = i.startsWith("{") || i.startsWith("[") ? JSON.parse(i) : i, t = l.split(".");
|
|
92
|
+
let n = s;
|
|
93
|
+
for (let a = 0; a < t.length - 1; a++)
|
|
94
|
+
n[t[a]] || (n[t[a]] = {}), n = n[t[a]];
|
|
95
|
+
n[t[t.length - 1]] = c, S(s) ? console.log(`Setting ${l} = ${i}`) : console.log("Failed to save settings");
|
|
96
|
+
} catch (c) {
|
|
97
|
+
console.error("Error setting value:", c.message);
|
|
86
98
|
}
|
|
87
99
|
return !0;
|
|
88
100
|
}
|
|
89
101
|
return !1;
|
|
90
102
|
}
|
|
91
|
-
function
|
|
92
|
-
const e =
|
|
103
|
+
function v() {
|
|
104
|
+
const e = g.homedir();
|
|
93
105
|
let s, o;
|
|
94
|
-
|
|
95
|
-
const
|
|
106
|
+
p ? (s = m.join(e, "AppData", "Local"), o = m.join(s, "systeminfo")) : (s = m.join(e, ".config"), o = m.join(s, "systeminfo"));
|
|
107
|
+
const l = m.resolve(E);
|
|
96
108
|
try {
|
|
97
|
-
if (
|
|
109
|
+
if (r.existsSync(s) || r.mkdirSync(s, { recursive: !0 }), r.copyFileSync(l, o), p || r.chmodSync(o, "755"), p) {
|
|
98
110
|
console.log("Windows installation:"), console.log("1. Script copied to:", o), console.log("2. To add to PowerShell profile, run:"), console.log(` Add-Content $PROFILE "node '${o}'"`), console.log(
|
|
99
111
|
"3. To add to Command Prompt, create a batch file in your startup folder"
|
|
100
112
|
);
|
|
101
|
-
const
|
|
102
|
-
|
|
113
|
+
const i = m.join(s, "systeminfo-startup.bat");
|
|
114
|
+
r.writeFileSync(i, `@echo off
|
|
103
115
|
node "${o}"
|
|
104
|
-
`), console.log("4. Batch file created:",
|
|
116
|
+
`), console.log("4. Batch file created:", i);
|
|
105
117
|
} else {
|
|
106
118
|
try {
|
|
107
|
-
const f =
|
|
108
|
-
|
|
119
|
+
const f = m.join(e, ".hushlogin");
|
|
120
|
+
r.writeFileSync(f, "");
|
|
109
121
|
} catch {
|
|
110
122
|
}
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
${
|
|
114
|
-
`) :
|
|
123
|
+
const i = m.join(e, ".bashrc"), c = `node ${o}`;
|
|
124
|
+
r.existsSync(i) ? r.readFileSync(i, "utf8").includes("systeminfo") || r.appendFileSync(i, `
|
|
125
|
+
${c}
|
|
126
|
+
`) : r.writeFileSync(i, `${c}
|
|
115
127
|
`);
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
${
|
|
128
|
+
const t = m.join(e, ".zshrc");
|
|
129
|
+
r.existsSync(t) && (r.readFileSync(t, "utf8").includes("systeminfo") || r.appendFileSync(t, `
|
|
130
|
+
${c}
|
|
119
131
|
`));
|
|
120
|
-
const
|
|
132
|
+
const n = m.join(
|
|
121
133
|
e,
|
|
122
134
|
".config",
|
|
123
135
|
"fish",
|
|
124
136
|
"config.fish"
|
|
125
137
|
);
|
|
126
|
-
|
|
127
|
-
|
|
138
|
+
r.existsSync(n) && (r.readFileSync(n, "utf8").includes("systeminfo") || r.appendFileSync(
|
|
139
|
+
n,
|
|
128
140
|
`
|
|
129
141
|
set -U fish_greeting ""
|
|
130
|
-
${
|
|
142
|
+
${c}
|
|
131
143
|
`
|
|
132
144
|
));
|
|
133
|
-
const
|
|
145
|
+
const a = m.join(
|
|
134
146
|
e,
|
|
135
147
|
".config",
|
|
136
148
|
"nushell",
|
|
137
149
|
"config.nu"
|
|
138
150
|
);
|
|
139
|
-
|
|
140
|
-
|
|
151
|
+
r.existsSync(a) && (r.readFileSync(a, "utf8").includes("systeminfo") || r.appendFileSync(
|
|
152
|
+
a,
|
|
141
153
|
`
|
|
142
154
|
$env.config.show_banner = false
|
|
143
|
-
${
|
|
155
|
+
${c}
|
|
144
156
|
`
|
|
145
157
|
));
|
|
146
158
|
}
|
|
147
159
|
console.log("Shell greeting installation completed!");
|
|
148
|
-
} catch (
|
|
149
|
-
console.error("Error installing shell greeting:",
|
|
160
|
+
} catch (i) {
|
|
161
|
+
console.error("Error installing shell greeting:", i.message), process.exit(1);
|
|
150
162
|
}
|
|
151
163
|
}
|
|
152
|
-
function
|
|
164
|
+
function L(e) {
|
|
153
165
|
for (const s of e)
|
|
154
166
|
if (!s.startsWith("--") && s.includes(","))
|
|
155
167
|
return s.split(",").map((o) => o.trim()).filter((o) => o.length > 0);
|
|
@@ -158,7 +170,7 @@ function O(e) {
|
|
|
158
170
|
return [s.trim()];
|
|
159
171
|
return null;
|
|
160
172
|
}
|
|
161
|
-
async function
|
|
173
|
+
async function T() {
|
|
162
174
|
console.log(`
|
|
163
175
|
System Info Script - TypeScript Version
|
|
164
176
|
|
|
@@ -189,9 +201,9 @@ Examples:
|
|
|
189
201
|
about-system --json
|
|
190
202
|
|
|
191
203
|
Settings file: ${I}
|
|
192
|
-
Cache file: ${
|
|
204
|
+
Cache file: ${w}
|
|
193
205
|
|
|
194
|
-
Platform: ${
|
|
206
|
+
Platform: ${p ? "Windows" : g.platform() === "darwin" ? "macOS" : g.platform() === "linux" ? "Linux" : "Unknown"}
|
|
195
207
|
|
|
196
208
|
Available display blocks:
|
|
197
209
|
Basic: user, hostname, uptime, shell, os, kernel, device
|
|
@@ -202,16 +214,16 @@ Available display blocks:
|
|
|
202
214
|
Tools: pacman, ports, containers
|
|
203
215
|
`);
|
|
204
216
|
}
|
|
205
|
-
async function
|
|
217
|
+
async function k() {
|
|
206
218
|
const e = process.argv.slice(2);
|
|
207
|
-
if (
|
|
219
|
+
if (O(e))
|
|
208
220
|
return;
|
|
209
221
|
if (e.includes("--help") || e.includes("-h")) {
|
|
210
|
-
await
|
|
222
|
+
await T();
|
|
211
223
|
return;
|
|
212
224
|
}
|
|
213
225
|
if (e.includes("--install")) {
|
|
214
|
-
|
|
226
|
+
v();
|
|
215
227
|
return;
|
|
216
228
|
}
|
|
217
229
|
if (e.includes("--json")) {
|
|
@@ -219,18 +231,18 @@ async function T() {
|
|
|
219
231
|
console.log(JSON.stringify(o, null, 2));
|
|
220
232
|
return;
|
|
221
233
|
}
|
|
222
|
-
const s =
|
|
234
|
+
const s = L(e);
|
|
223
235
|
if (s) {
|
|
224
|
-
await
|
|
236
|
+
await _([s]);
|
|
225
237
|
return;
|
|
226
238
|
}
|
|
227
|
-
await
|
|
239
|
+
await _();
|
|
228
240
|
}
|
|
229
|
-
|
|
241
|
+
k().catch((e) => {
|
|
230
242
|
console.error("Error:", e.message), process.exit(1);
|
|
231
243
|
});
|
|
232
244
|
export {
|
|
233
|
-
|
|
234
|
-
|
|
245
|
+
_ as displaySystemInfo,
|
|
246
|
+
v as installShellGreeting
|
|
235
247
|
};
|
|
236
248
|
//# sourceMappingURL=about-system-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"about-system-cli.js","sources":["../src/about-system-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport os from \"os\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { getSystemInfo } from \"./system-info-api\";\nimport type { SystemInfo, SystemInfoOptions } from \"./systeminfo-types\";\n\nconst __filename = fileURLToPath(import.meta.url);\n\nimport {\n Settings,\n DEFAULT_SETTINGS,\n colors,\n SETTINGS_FILE,\n CACHE_FILE,\n loadSettings,\n saveSettings,\n} from \"./info/settings\";\n\n// Platform detection\nconst IS_WINDOWS = os.platform() === \"win32\";\n\nfunction formatValue(key: string, value: string, settings: Settings): string {\n if (!value || value.trim() === \"\") return \"\";\n\n const color =\n colors[settings.colors[key] as keyof typeof colors] || colors.reset;\n const emoji = settings.display.show_emojis ? settings.emojis[key] || \"\" : \"\";\n\n // Special handling for battery emoji\n if (key === \"battery\" && settings.display.show_emojis) {\n const batteryEmoji = value.includes(\"+\")\n ? settings.emojis.battery_charging\n : settings.emojis.battery;\n return `${color}${batteryEmoji}${value}`;\n }\n\n // Multicolor handling for ports\n if (key === \"ports\" && settings.colors[key] === \"multicolor\" && value) {\n const emoji = settings.display.show_emojis ? settings.emojis.ports : \"\";\n let output = ` ${emoji}`;\n const ports = value.split(\" \");\n const colorCodes = [31, 32, 33, 34, 35, 36];\n ports.forEach((port, index) => {\n const colorCode = colorCodes[index % colorCodes.length];\n output += `\\x1b[${colorCode}m${port}\\x1b[0m `;\n });\n return output.trim();\n }\n\n // Multicolor handling for pacman\n if (key === \"pacman\" && settings.colors[key] === \"multicolor\" && value) {\n const emoji = settings.display.show_emojis ? settings.emojis.pacman : \"\";\n return `${color}${emoji}${value}`;\n }\n\n return `${color}${emoji}${value}`;\n}\n\nfunction removeAnsiCodes(str: string): string {\n return str.replace(/\\x1b\\[[0-9;]*m/g, \"\");\n}\n\nasync function displaySystemInfo(\n customDisplayOrder: string[][] | null = null\n): Promise<void> {\n const settings = loadSettings();\n const displayOrder = customDisplayOrder || settings.display_order;\n\n // Get system info\n const info = await getSystemInfo();\n\n // Single line mode\n if (settings.display.single_line) {\n const allItems: string[] = [];\n\n for (const group of displayOrder) {\n for (const key of group) {\n const value = info[key as keyof SystemInfo] as string;\n const formatted = formatValue(key, value, settings);\n if (formatted && formatted.trim()) {\n allItems.push(formatted);\n }\n }\n }\n\n if (allItems.length > 0) {\n console.log(allItems.join(\" \") + colors.reset);\n }\n return;\n }\n\n // Multi-line mode with intelligent wrapping\n const lines: string[] = [];\n let currentLine = \"\";\n const maxLineLength = settings.display.line_wrap_length;\n\n for (const group of displayOrder) {\n for (const key of group) {\n const value = info[key as keyof SystemInfo] as string;\n const formatted = formatValue(key, value, settings);\n\n if (formatted && formatted.trim()) {\n const formattedLength = removeAnsiCodes(formatted).length;\n const currentLineLength = removeAnsiCodes(currentLine).length;\n\n if (\n currentLine &&\n currentLineLength + formattedLength + 1 > maxLineLength\n ) {\n lines.push(currentLine);\n currentLine = formatted;\n } else {\n currentLine = currentLine ? `${currentLine} ${formatted}` : formatted;\n }\n }\n }\n }\n\n if (currentLine) {\n lines.push(currentLine);\n }\n\n // Output\n if (lines.length > 0) {\n lines.forEach((line) => {\n console.log(line + colors.reset);\n });\n } else if (settings.advanced.debug) {\n console.log(\"No system information could be displayed\");\n }\n}\n\nfunction handleSettingsCommand(args: string[]): boolean {\n const settings = loadSettings();\n\n if (args.includes(\"--settings-init\")) {\n if (saveSettings(DEFAULT_SETTINGS)) {\n console.log(\"Settings initialized with defaults\");\n } else {\n console.log(\"Failed to initialize settings\");\n }\n return true;\n }\n\n if (args.includes(\"--settings-show\")) {\n console.log(\"Current settings:\");\n console.log(JSON.stringify(settings, null, 2));\n return true;\n }\n\n if (args.includes(\"--settings-reset\")) {\n if (saveSettings(DEFAULT_SETTINGS)) {\n console.log(\"Settings reset to defaults\");\n } else {\n console.log(\"Failed to reset settings\");\n }\n return true;\n }\n\n if (args.includes(\"--refresh\")) {\n try {\n if (fs.existsSync(CACHE_FILE)) {\n fs.unlinkSync(CACHE_FILE);\n console.log(\"Cache cleared\");\n }\n } catch (error) {\n console.error(\"Error clearing cache:\", (error as Error).message);\n }\n return true;\n }\n\n const setIndex = args.indexOf(\"--set\");\n if (setIndex !== -1 && args[setIndex + 1] && args[setIndex + 2]) {\n const key = args[setIndex + 1];\n const value = args[setIndex + 2];\n\n try {\n const parsedValue =\n value.startsWith(\"{\") || value.startsWith(\"[\")\n ? JSON.parse(value)\n : value;\n\n const keys = key.split(\".\");\n let current: any = settings;\n for (let i = 0; i < keys.length - 1; i++) {\n if (!current[keys[i]]) current[keys[i]] = {};\n current = current[keys[i]];\n }\n current[keys[keys.length - 1]] = parsedValue;\n\n if (saveSettings(settings)) {\n console.log(`Setting ${key} = ${value}`);\n } else {\n console.log(\"Failed to save settings\");\n }\n } catch (error) {\n console.error(\"Error setting value:\", (error as Error).message);\n }\n return true;\n }\n\n return false;\n}\n\nfunction installShellGreeting(): void {\n const homeDir = os.homedir();\n\n let configDir: string, scriptPath: string;\n if (IS_WINDOWS) {\n configDir = path.join(homeDir, \"AppData\", \"Local\");\n scriptPath = path.join(configDir, \"systeminfo\");\n } else {\n configDir = path.join(homeDir, \".config\");\n scriptPath = path.join(configDir, \"systeminfo\");\n }\n\n const currentScript = path.resolve(__filename);\n\n try {\n if (!fs.existsSync(configDir)) {\n fs.mkdirSync(configDir, { recursive: true });\n }\n\n fs.copyFileSync(currentScript, scriptPath);\n if (!IS_WINDOWS) {\n fs.chmodSync(scriptPath, \"755\");\n }\n\n if (IS_WINDOWS) {\n console.log(\"Windows installation:\");\n console.log(\"1. Script copied to:\", scriptPath);\n console.log(\"2. To add to PowerShell profile, run:\");\n console.log(` Add-Content $PROFILE \"node '${scriptPath}'\"`);\n console.log(\n \"3. To add to Command Prompt, create a batch file in your startup folder\"\n );\n\n const startupBat = path.join(configDir, \"systeminfo-startup.bat\");\n fs.writeFileSync(startupBat, `@echo off\\nnode \"${scriptPath}\"\\n`);\n console.log(\"4. Batch file created:\", startupBat);\n } else {\n try {\n const hushLoginPath = path.join(homeDir, \".hushlogin\");\n fs.writeFileSync(hushLoginPath, \"\");\n } catch {}\n\n const bashrcPath = path.join(homeDir, \".bashrc\");\n const bashLine = `node ${scriptPath}`;\n\n if (fs.existsSync(bashrcPath)) {\n const bashrc = fs.readFileSync(bashrcPath, \"utf8\");\n if (!bashrc.includes(\"systeminfo\")) {\n fs.appendFileSync(bashrcPath, `\\n${bashLine}\\n`);\n }\n } else {\n fs.writeFileSync(bashrcPath, `${bashLine}\\n`);\n }\n\n const zshrcPath = path.join(homeDir, \".zshrc\");\n if (fs.existsSync(zshrcPath)) {\n const zshrc = fs.readFileSync(zshrcPath, \"utf8\");\n if (!zshrc.includes(\"systeminfo\")) {\n fs.appendFileSync(zshrcPath, `\\n${bashLine}\\n`);\n }\n }\n\n const fishConfigPath = path.join(\n homeDir,\n \".config\",\n \"fish\",\n \"config.fish\"\n );\n if (fs.existsSync(fishConfigPath)) {\n const fishConfig = fs.readFileSync(fishConfigPath, \"utf8\");\n if (!fishConfig.includes(\"systeminfo\")) {\n fs.appendFileSync(\n fishConfigPath,\n `\\nset -U fish_greeting \"\"\\n${bashLine}\\n`\n );\n }\n }\n\n const nushellConfigPath = path.join(\n homeDir,\n \".config\",\n \"nushell\",\n \"config.nu\"\n );\n if (fs.existsSync(nushellConfigPath)) {\n const nushellConfig = fs.readFileSync(nushellConfigPath, \"utf8\");\n if (!nushellConfig.includes(\"systeminfo\")) {\n fs.appendFileSync(\n nushellConfigPath,\n `\\n$env.config.show_banner = false\\n${bashLine}\\n`\n );\n }\n }\n }\n\n console.log(\"Shell greeting installation completed!\");\n } catch (error) {\n console.error(\"Error installing shell greeting:\", (error as Error).message);\n process.exit(1);\n }\n}\n\nfunction parseCLIMode(args: string[]): string[] | null {\n for (const arg of args) {\n if (!arg.startsWith(\"--\") && arg.includes(\",\")) {\n return arg\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part.length > 0);\n }\n }\n\n for (const arg of args) {\n if (!arg.startsWith(\"--\") && !arg.includes(\"=\") && arg.length > 0) {\n return [arg.trim()];\n }\n }\n\n return null;\n}\n\nasync function showHelp(): Promise<void> {\n console.log(`\nSystem Info Script - TypeScript Version\n\nUsage:\n about-system [options]\n about-system <part1,part2,...> # CLI mode: show specific parts only\n\nOptions:\n --help, -h Show this help message\n --install Install as shell greeting\n --settings-init Initialize settings file with defaults\n --settings-show Display current settings\n --settings-reset Reset settings to defaults\n --refresh Clear the cache file\n --set <key> <value> Set a configuration value (use dot notation)\n --json Output as JSON\n\nExamples:\n about-system # Show all info (default)\n about-system cpu,os # Show only CPU and OS info\n about-system user,hostname,ip # Show user, hostname, and IP\n about-system disk_used # Show only disk usage\n about-system --install\n about-system --set display.show_emojis false\n about-system --set colors.user blue\n about-system --set emojis.cpu \"🚀 \"\n about-system --set labels.cpu \"Processor\"\n about-system --json\n\nSettings file: ${SETTINGS_FILE}\nCache file: ${CACHE_FILE}\n\nPlatform: ${\n IS_WINDOWS\n ? \"Windows\"\n : os.platform() === \"darwin\"\n ? \"macOS\"\n : os.platform() === \"linux\"\n ? \"Linux\"\n : \"Unknown\"\n }\n\nAvailable display blocks:\n Basic: user, hostname, uptime, shell, os, kernel, device\n Resources: disk_used, ram_used, memory_available, swap_used, top_process\n Network: ip, iplocal, city, domain, isp, network_interfaces\n Hardware: cpu, gpu, temperature, battery, screen_resolution\n System: load_average, users_logged_in, mount_points, services_running\n Tools: pacman, ports, containers\n`);\n}\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n\n if (handleSettingsCommand(args)) {\n return;\n }\n\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n await showHelp();\n return;\n }\n\n if (args.includes(\"--install\")) {\n installShellGreeting();\n return;\n }\n\n if (args.includes(\"--json\")) {\n const info = await getSystemInfo();\n console.log(JSON.stringify(info, null, 2));\n return;\n }\n\n const cliParts = parseCLIMode(args);\n if (cliParts) {\n const customDisplayOrder = [cliParts];\n await displaySystemInfo(customDisplayOrder);\n return;\n }\n\n await displaySystemInfo();\n}\n\nmain().catch((error) => {\n console.error(\"Error:\", error.message);\n process.exit(1);\n});\n\nexport { displaySystemInfo, installShellGreeting };\n"],"names":["__filename","fileURLToPath","IS_WINDOWS","os","formatValue","key","value","settings","color","colors","emoji","batteryEmoji","output","ports","colorCodes","port","index","colorCode","removeAnsiCodes","str","displaySystemInfo","customDisplayOrder","loadSettings","displayOrder","info","getSystemInfo","allItems","group","formatted","lines","currentLine","maxLineLength","formattedLength","currentLineLength","line","handleSettingsCommand","args","saveSettings","DEFAULT_SETTINGS","fs","CACHE_FILE","error","setIndex","parsedValue","keys","current","i","installShellGreeting","homeDir","configDir","scriptPath","path","currentScript","startupBat","hushLoginPath","bashrcPath","bashLine","zshrcPath","fishConfigPath","nushellConfigPath","parseCLIMode","arg","part","showHelp","SETTINGS_FILE","main","cliParts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"about-system-cli.js","sources":["../src/about-system-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport os from \"os\";\nimport fs from \"fs\";\nimport path from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { getSystemInfo } from \"./system-info-api\";\nimport type { SystemInfo, SystemInfoOptions } from \"./systeminfo-types\";\n\nconst __filename = fileURLToPath(import.meta.url);\n\nimport {\n Settings,\n DEFAULT_SETTINGS,\n colors,\n SETTINGS_FILE,\n CACHE_FILE,\n loadSettings,\n saveSettings,\n} from \"./info/settings\";\n\n// Platform detection\nconst IS_WINDOWS = os.platform() === \"win32\";\n\nfunction formatValue(key: string, value: string, settings: Settings): string {\n if (!value || value.trim() === \"\") return \"\";\n\n const color =\n colors[settings.colors[key] as keyof typeof colors] || colors.reset;\n const emoji = settings.display.show_emojis ? settings.emojis[key] || \"\" : \"\";\n\n // Special handling for battery emoji\n if (key === \"battery\" && settings.display.show_emojis) {\n const batteryEmoji = value.includes(\"+\")\n ? settings.emojis.battery_charging\n : settings.emojis.battery;\n return `${color}${batteryEmoji}${value}`;\n }\n\n // Multicolor handling for ports\n if (key === \"ports\" && settings.colors[key] === \"multicolor\" && value) {\n const emoji = settings.display.show_emojis ? settings.emojis.ports : \"\";\n let output = ` ${emoji}`;\n const ports = value.split(\" \");\n const colorCodes = [31, 32, 33, 34, 35, 36];\n ports.forEach((port, index) => {\n const colorCode = colorCodes[index % colorCodes.length];\n output += `\\x1b[${colorCode}m${port}\\x1b[0m `;\n });\n return output.trim();\n }\n\n // Multicolor handling for pacman\n if (key === \"pacman\" && settings.colors[key] === \"multicolor\" && value) {\n const emoji = settings.display.show_emojis ? settings.emojis.pacman : \"\";\n return `${color}${emoji}${value}`;\n }\n\n return `${color}${emoji}${value}`;\n}\n\n/**\n * Wraps text to a maximum visible width, filling each line completely with\n * characters before moving on. Unlike block-boundary wrapping, this breaks in\n * the middle of an info block when it doesn't fit, so no visible space is left\n * unused at the end of a line.\n *\n * ANSI color codes are copied verbatim and never counted toward the width, and\n * the active color is re-applied at the start of each wrapped line so colors\n * survive a mid-block break. Emoji surrogate pairs are kept intact.\n *\n * @param text - The text to wrap (may contain ANSI escape sequences)\n * @param maxLength - Maximum visible characters per line\n * @returns Array of wrapped lines\n */\nfunction wrapAnsiText(text: string, maxLength: number): string[] {\n if (maxLength <= 0) return text ? [text] : [];\n\n const lines: string[] = [];\n let currentLine = \"\";\n let visibleCount = 0;\n let activeAnsi = \"\";\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i];\n\n // Copy ANSI escape sequences verbatim without counting them.\n if (char === \"\\x1b\" && text[i + 1] === \"[\") {\n let seq = char;\n let j = i + 1;\n while (j < text.length && text[j] !== \"m\") {\n seq += text[j];\n j++;\n }\n if (j < text.length) seq += text[j]; // include the trailing \"m\"\n currentLine += seq;\n // Track the active color so wrapped lines keep it; a reset clears it.\n activeAnsi = /\\x1b\\[0m/.test(seq) ? \"\" : seq;\n i = j;\n continue;\n }\n\n // Keep an emoji (surrogate pair) together and count it as width 2.\n let unit = char;\n let width = 1;\n const code = text.charCodeAt(i);\n if (code >= 0xd800 && code <= 0xdbff && i + 1 < text.length) {\n unit = char + text[i + 1];\n width = 2;\n i++;\n }\n\n // Line is full: break here, even in the middle of an info block.\n if (visibleCount >= maxLength) {\n lines.push(currentLine);\n currentLine = activeAnsi;\n visibleCount = 0;\n }\n\n currentLine += unit;\n visibleCount += width;\n }\n\n if (currentLine) lines.push(currentLine);\n\n return lines;\n}\n\nasync function displaySystemInfo(\n customDisplayOrder: string[][] | null = null\n): Promise<void> {\n const settings = loadSettings();\n const displayOrder = customDisplayOrder || settings.display_order;\n\n // Get system info\n const info = await getSystemInfo();\n\n // Single line mode\n if (settings.display.single_line) {\n const allItems: string[] = [];\n\n for (const group of displayOrder) {\n for (const key of group) {\n const value = info[key as keyof SystemInfo] as string;\n const formatted = formatValue(key, value, settings);\n if (formatted && formatted.trim()) {\n allItems.push(formatted);\n }\n }\n }\n\n if (allItems.length > 0) {\n console.log(allItems.join(\" \") + colors.reset);\n }\n return;\n }\n\n // Multi-line mode: fill each line completely with characters, wrapping in\n // the middle of an info block when it no longer fits.\n const maxLineLength = settings.display.line_wrap_length;\n const allItems: string[] = [];\n\n for (const group of displayOrder) {\n for (const key of group) {\n const value = info[key as keyof SystemInfo] as string;\n const formatted = formatValue(key, value, settings);\n\n if (formatted && formatted.trim()) {\n allItems.push(formatted);\n }\n }\n }\n\n const lines = wrapAnsiText(allItems.join(\" \"), maxLineLength);\n\n // Output\n if (lines.length > 0) {\n lines.forEach((line) => {\n console.log(line + colors.reset);\n });\n } else if (settings.advanced.debug) {\n console.log(\"No system information could be displayed\");\n }\n}\n\nfunction handleSettingsCommand(args: string[]): boolean {\n const settings = loadSettings();\n\n if (args.includes(\"--settings-init\")) {\n if (saveSettings(DEFAULT_SETTINGS)) {\n console.log(\"Settings initialized with defaults\");\n } else {\n console.log(\"Failed to initialize settings\");\n }\n return true;\n }\n\n if (args.includes(\"--settings-show\")) {\n console.log(\"Current settings:\");\n console.log(JSON.stringify(settings, null, 2));\n return true;\n }\n\n if (args.includes(\"--settings-reset\")) {\n if (saveSettings(DEFAULT_SETTINGS)) {\n console.log(\"Settings reset to defaults\");\n } else {\n console.log(\"Failed to reset settings\");\n }\n return true;\n }\n\n if (args.includes(\"--refresh\")) {\n try {\n if (fs.existsSync(CACHE_FILE)) {\n fs.unlinkSync(CACHE_FILE);\n console.log(\"Cache cleared\");\n }\n } catch (error) {\n console.error(\"Error clearing cache:\", (error as Error).message);\n }\n return true;\n }\n\n const setIndex = args.indexOf(\"--set\");\n if (setIndex !== -1 && args[setIndex + 1] && args[setIndex + 2]) {\n const key = args[setIndex + 1];\n const value = args[setIndex + 2];\n\n try {\n const parsedValue =\n value.startsWith(\"{\") || value.startsWith(\"[\")\n ? JSON.parse(value)\n : value;\n\n const keys = key.split(\".\");\n let current: any = settings;\n for (let i = 0; i < keys.length - 1; i++) {\n if (!current[keys[i]]) current[keys[i]] = {};\n current = current[keys[i]];\n }\n current[keys[keys.length - 1]] = parsedValue;\n\n if (saveSettings(settings)) {\n console.log(`Setting ${key} = ${value}`);\n } else {\n console.log(\"Failed to save settings\");\n }\n } catch (error) {\n console.error(\"Error setting value:\", (error as Error).message);\n }\n return true;\n }\n\n return false;\n}\n\nfunction installShellGreeting(): void {\n const homeDir = os.homedir();\n\n let configDir: string, scriptPath: string;\n if (IS_WINDOWS) {\n configDir = path.join(homeDir, \"AppData\", \"Local\");\n scriptPath = path.join(configDir, \"systeminfo\");\n } else {\n configDir = path.join(homeDir, \".config\");\n scriptPath = path.join(configDir, \"systeminfo\");\n }\n\n const currentScript = path.resolve(__filename);\n\n try {\n if (!fs.existsSync(configDir)) {\n fs.mkdirSync(configDir, { recursive: true });\n }\n\n fs.copyFileSync(currentScript, scriptPath);\n if (!IS_WINDOWS) {\n fs.chmodSync(scriptPath, \"755\");\n }\n\n if (IS_WINDOWS) {\n console.log(\"Windows installation:\");\n console.log(\"1. Script copied to:\", scriptPath);\n console.log(\"2. To add to PowerShell profile, run:\");\n console.log(` Add-Content $PROFILE \"node '${scriptPath}'\"`);\n console.log(\n \"3. To add to Command Prompt, create a batch file in your startup folder\"\n );\n\n const startupBat = path.join(configDir, \"systeminfo-startup.bat\");\n fs.writeFileSync(startupBat, `@echo off\\nnode \"${scriptPath}\"\\n`);\n console.log(\"4. Batch file created:\", startupBat);\n } else {\n try {\n const hushLoginPath = path.join(homeDir, \".hushlogin\");\n fs.writeFileSync(hushLoginPath, \"\");\n } catch {}\n\n const bashrcPath = path.join(homeDir, \".bashrc\");\n const bashLine = `node ${scriptPath}`;\n\n if (fs.existsSync(bashrcPath)) {\n const bashrc = fs.readFileSync(bashrcPath, \"utf8\");\n if (!bashrc.includes(\"systeminfo\")) {\n fs.appendFileSync(bashrcPath, `\\n${bashLine}\\n`);\n }\n } else {\n fs.writeFileSync(bashrcPath, `${bashLine}\\n`);\n }\n\n const zshrcPath = path.join(homeDir, \".zshrc\");\n if (fs.existsSync(zshrcPath)) {\n const zshrc = fs.readFileSync(zshrcPath, \"utf8\");\n if (!zshrc.includes(\"systeminfo\")) {\n fs.appendFileSync(zshrcPath, `\\n${bashLine}\\n`);\n }\n }\n\n const fishConfigPath = path.join(\n homeDir,\n \".config\",\n \"fish\",\n \"config.fish\"\n );\n if (fs.existsSync(fishConfigPath)) {\n const fishConfig = fs.readFileSync(fishConfigPath, \"utf8\");\n if (!fishConfig.includes(\"systeminfo\")) {\n fs.appendFileSync(\n fishConfigPath,\n `\\nset -U fish_greeting \"\"\\n${bashLine}\\n`\n );\n }\n }\n\n const nushellConfigPath = path.join(\n homeDir,\n \".config\",\n \"nushell\",\n \"config.nu\"\n );\n if (fs.existsSync(nushellConfigPath)) {\n const nushellConfig = fs.readFileSync(nushellConfigPath, \"utf8\");\n if (!nushellConfig.includes(\"systeminfo\")) {\n fs.appendFileSync(\n nushellConfigPath,\n `\\n$env.config.show_banner = false\\n${bashLine}\\n`\n );\n }\n }\n }\n\n console.log(\"Shell greeting installation completed!\");\n } catch (error) {\n console.error(\"Error installing shell greeting:\", (error as Error).message);\n process.exit(1);\n }\n}\n\nfunction parseCLIMode(args: string[]): string[] | null {\n for (const arg of args) {\n if (!arg.startsWith(\"--\") && arg.includes(\",\")) {\n return arg\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part.length > 0);\n }\n }\n\n for (const arg of args) {\n if (!arg.startsWith(\"--\") && !arg.includes(\"=\") && arg.length > 0) {\n return [arg.trim()];\n }\n }\n\n return null;\n}\n\nasync function showHelp(): Promise<void> {\n console.log(`\nSystem Info Script - TypeScript Version\n\nUsage:\n about-system [options]\n about-system <part1,part2,...> # CLI mode: show specific parts only\n\nOptions:\n --help, -h Show this help message\n --install Install as shell greeting\n --settings-init Initialize settings file with defaults\n --settings-show Display current settings\n --settings-reset Reset settings to defaults\n --refresh Clear the cache file\n --set <key> <value> Set a configuration value (use dot notation)\n --json Output as JSON\n\nExamples:\n about-system # Show all info (default)\n about-system cpu,os # Show only CPU and OS info\n about-system user,hostname,ip # Show user, hostname, and IP\n about-system disk_used # Show only disk usage\n about-system --install\n about-system --set display.show_emojis false\n about-system --set colors.user blue\n about-system --set emojis.cpu \"🚀 \"\n about-system --set labels.cpu \"Processor\"\n about-system --json\n\nSettings file: ${SETTINGS_FILE}\nCache file: ${CACHE_FILE}\n\nPlatform: ${\n IS_WINDOWS\n ? \"Windows\"\n : os.platform() === \"darwin\"\n ? \"macOS\"\n : os.platform() === \"linux\"\n ? \"Linux\"\n : \"Unknown\"\n }\n\nAvailable display blocks:\n Basic: user, hostname, uptime, shell, os, kernel, device\n Resources: disk_used, ram_used, memory_available, swap_used, top_process\n Network: ip, iplocal, city, domain, isp, network_interfaces\n Hardware: cpu, gpu, temperature, battery, screen_resolution\n System: load_average, users_logged_in, mount_points, services_running\n Tools: pacman, ports, containers\n`);\n}\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n\n if (handleSettingsCommand(args)) {\n return;\n }\n\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n await showHelp();\n return;\n }\n\n if (args.includes(\"--install\")) {\n installShellGreeting();\n return;\n }\n\n if (args.includes(\"--json\")) {\n const info = await getSystemInfo();\n console.log(JSON.stringify(info, null, 2));\n return;\n }\n\n const cliParts = parseCLIMode(args);\n if (cliParts) {\n const customDisplayOrder = [cliParts];\n await displaySystemInfo(customDisplayOrder);\n return;\n }\n\n await displaySystemInfo();\n}\n\nmain().catch((error) => {\n console.error(\"Error:\", error.message);\n process.exit(1);\n});\n\nexport { displaySystemInfo, installShellGreeting };\n"],"names":["__filename","fileURLToPath","IS_WINDOWS","os","formatValue","key","value","settings","color","colors","emoji","batteryEmoji","output","ports","colorCodes","port","index","colorCode","wrapAnsiText","text","maxLength","lines","currentLine","visibleCount","activeAnsi","i","char","seq","j","unit","width","code","displaySystemInfo","customDisplayOrder","loadSettings","displayOrder","info","getSystemInfo","allItems","group","formatted","maxLineLength","line","handleSettingsCommand","args","saveSettings","DEFAULT_SETTINGS","fs","CACHE_FILE","error","setIndex","parsedValue","keys","current","installShellGreeting","homeDir","configDir","scriptPath","path","currentScript","startupBat","hushLoginPath","bashrcPath","bashLine","zshrcPath","fishConfigPath","nushellConfigPath","parseCLIMode","arg","part","showHelp","SETTINGS_FILE","main","cliParts"],"mappings":"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"}
|
package/dist/index.js
CHANGED