hmgr 0.0.12 → 0.0.14
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.
|
@@ -42,20 +42,27 @@ export async function npmVersion(paket, optionen = {}) {
|
|
|
42
42
|
clearTimeout(wecker);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
/** Die eine Zeile, die GUI-Sidebar und `hmgr update` gleichlautend zeigen. */
|
|
46
|
-
export function cliHinweisText(installiert, neu) {
|
|
47
|
-
return `hmgr-CLI ${installiert} — npm hat ${neu}: ${NPM_BEFEHL}`;
|
|
48
|
-
}
|
|
49
45
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
46
|
+
* Die eine Zeile, die GUI-Sidebar und `hmgr update` gleichlautend zeigen. `installiert === null`
|
|
47
|
+
* heißt: eine hmgr-CLI ist da, aber so alt (vor 0.0.7, E72), dass sie ihre Version nicht sagen
|
|
48
|
+
* kann — dieser Fall meldet sich auch ohne `neu` (Registry unerreichbar), denn die Warnung „veraltet"
|
|
49
|
+
* hängt nicht am Netz, nur der Vergleich mit npm tut das.
|
|
53
50
|
*/
|
|
51
|
+
export function cliHinweisText(installiert, neu) {
|
|
52
|
+
if (installiert !== null && neu !== null)
|
|
53
|
+
return `hmgr-CLI ${installiert} — npm hat ${neu}: ${NPM_BEFEHL}`;
|
|
54
|
+
if (neu !== null)
|
|
55
|
+
return `hmgr-CLI veraltet (vor 0.0.7, kennt --version nicht) — npm hat ${neu}: ${NPM_BEFEHL}`;
|
|
56
|
+
return `hmgr-CLI veraltet (vor 0.0.7, kennt --version nicht): ${NPM_BEFEHL}`;
|
|
57
|
+
}
|
|
54
58
|
export async function cliUpdateHinweis(installiert, optionen = {}) {
|
|
55
59
|
const neu = await npmVersion('hmgr', optionen);
|
|
60
|
+
if (installiert === null) {
|
|
61
|
+
// `text` für die CLI (eine Zeile), die Einzelteile für die GUI, die den Befehl hervorhebt. Der
|
|
62
|
+
// Befehl kommt mit, damit er nicht ein zweites Mal im Renderer steht.
|
|
63
|
+
return { installiert: null, neu, befehl: NPM_BEFEHL, text: cliHinweisText(null, neu) };
|
|
64
|
+
}
|
|
56
65
|
if (neu === null || !versionIstNeuer(neu, installiert))
|
|
57
66
|
return null;
|
|
58
|
-
// `text` für die CLI (eine Zeile), die Einzelteile für die GUI, die den Befehl hervorhebt. Der
|
|
59
|
-
// Befehl kommt mit, damit er nicht ein zweites Mal im Renderer steht.
|
|
60
67
|
return { installiert, neu, befehl: NPM_BEFEHL, text: cliHinweisText(installiert, neu) };
|
|
61
68
|
}
|
package/dist/gui/hmgr-cli.js
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
import spawn from 'cross-spawn';
|
|
5
5
|
import { versionLesen } from "../kern/version.js";
|
|
6
6
|
/**
|
|
7
|
-
* `hmgr --version` (E72: nur die Nummer, Exit 0).
|
|
8
|
-
*
|
|
9
|
-
* eine fehlende CLI ist der Normalfall bei einer reinen GUI-Installation, keine Störung.
|
|
7
|
+
* `hmgr --version` (E72: nur die Nummer, Exit 0). Kein Fehler dringt nach außen — der Aufrufer
|
|
8
|
+
* entscheidet anhand des Befunds, was zu melden ist.
|
|
10
9
|
*
|
|
11
10
|
* `spawn` von cross-spawn wie im claude-Adapter (E65/B7): unter Windows ist die npm-installierte
|
|
12
11
|
* `hmgr` ein `.cmd`-Shim, das Node seit dem Fix zu CVE-2024-27980 ohne Umweg über cmd.exe nicht
|
|
13
|
-
* mehr startet. stdin zu und ein Timeout, damit nichts hängen bleibt
|
|
12
|
+
* mehr startet. stdin zu und ein Timeout, damit nichts hängen bleibt — ein Timeout liefert `fehlt`
|
|
13
|
+
* (cross-spawn beendet den Prozess dann mit `close` und `null`-Code samt Signal, kein `error`).
|
|
14
14
|
*/
|
|
15
15
|
export function hmgrCliVersion() {
|
|
16
16
|
return new Promise((aufloesen) => {
|
|
@@ -29,16 +29,19 @@ export function hmgrCliVersion() {
|
|
|
29
29
|
});
|
|
30
30
|
let stdout = '';
|
|
31
31
|
kind.stdout.on('data', (stueck) => (stdout += stueck));
|
|
32
|
-
kind.on('error', () => melden(
|
|
32
|
+
kind.on('error', () => melden({ art: 'fehlt' }));
|
|
33
33
|
kind.on('close', (code) => {
|
|
34
|
+
if (code === null)
|
|
35
|
+
return melden({ art: 'fehlt' });
|
|
34
36
|
if (code !== 0)
|
|
35
|
-
return melden(
|
|
37
|
+
return melden({ art: 'ohne-version' });
|
|
36
38
|
const text = stdout.trim().split('\n')[0]?.trim() ?? '';
|
|
37
|
-
|
|
39
|
+
const version = versionLesen(text);
|
|
40
|
+
melden(version === null ? { art: 'ohne-version' } : { art: 'version', version: text });
|
|
38
41
|
});
|
|
39
42
|
}
|
|
40
43
|
catch {
|
|
41
|
-
melden(
|
|
44
|
+
melden({ art: 'fehlt' });
|
|
42
45
|
}
|
|
43
46
|
});
|
|
44
47
|
}
|
package/dist/gui/main.js
CHANGED
|
@@ -1182,24 +1182,40 @@ function selbstUpdateMelden(nachricht) {
|
|
|
1182
1182
|
* nie installiert: ein `npm install -g` aus der App scheitert leicht an nvm-Pfaden und Rechten
|
|
1183
1183
|
* (F82).
|
|
1184
1184
|
*
|
|
1185
|
-
* Still bei
|
|
1186
|
-
*
|
|
1187
|
-
*
|
|
1185
|
+
* Still bei „fehlt": keine CLI im PATH, das ist der Normalfall bei einer reinen GUI-Installation.
|
|
1186
|
+
* Bei „version" wie bisher still bei Fehlercode, Registry unerreichbar, gleicher oder älterer
|
|
1187
|
+
* Version auf npm. Bei „ohne-version" (E82: CLI vor 0.0.7, kennt --version nicht) gibt es IMMER
|
|
1188
|
+
* eine Sidebar-Meldung — sie hängt nicht am Netz —, der Verlaufseintrag aber nur, wenn npm
|
|
1189
|
+
* erreichbar war und eine Version lieferte. Der Login-PATH (F47) muss vorher stehen, sonst findet
|
|
1190
|
+
* der Aufruf die per nvm installierte CLI nicht.
|
|
1188
1191
|
*/
|
|
1189
1192
|
async function cliUpdatePruefen() {
|
|
1190
1193
|
await pathBereit;
|
|
1191
|
-
const
|
|
1192
|
-
if (
|
|
1194
|
+
const befund = await hmgrCliVersion();
|
|
1195
|
+
if (befund.art === 'fehlt')
|
|
1193
1196
|
return;
|
|
1194
|
-
|
|
1195
|
-
|
|
1197
|
+
if (befund.art === 'version') {
|
|
1198
|
+
const hinweis = await cliUpdateHinweis(befund.version, { protokoll: (zeile) => console.log(zeile) });
|
|
1199
|
+
if (hinweis === null)
|
|
1200
|
+
return;
|
|
1201
|
+
// Verlaufseintrag „CLI X verfügbar" (E80), einmal je neuer Version, vor der Sidebar-Meldung.
|
|
1202
|
+
await anwendungsfaelle
|
|
1203
|
+
.hmgrEreignisVermerken({ art: 'cli-verfuegbar', version: hinweis.neu }, letzterAusloeser)
|
|
1204
|
+
.catch((fehler) => {
|
|
1205
|
+
console.log(`[verlauf] ${fehler instanceof Error ? fehler.message : String(fehler)}`);
|
|
1206
|
+
});
|
|
1207
|
+
selbstUpdateMelden({ art: 'cli', ...hinweis });
|
|
1196
1208
|
return;
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1209
|
+
}
|
|
1210
|
+
// befund.art === 'ohne-version'
|
|
1211
|
+
const hinweis = await cliUpdateHinweis(null, { protokoll: (zeile) => console.log(zeile) });
|
|
1212
|
+
if (hinweis.neu !== null) {
|
|
1213
|
+
await anwendungsfaelle
|
|
1214
|
+
.hmgrEreignisVermerken({ art: 'cli-verfuegbar', version: hinweis.neu }, letzterAusloeser)
|
|
1215
|
+
.catch((fehler) => {
|
|
1216
|
+
console.log(`[verlauf] ${fehler instanceof Error ? fehler.message : String(fehler)}`);
|
|
1217
|
+
});
|
|
1218
|
+
}
|
|
1203
1219
|
selbstUpdateMelden({ art: 'cli', ...hinweis });
|
|
1204
1220
|
}
|
|
1205
1221
|
/**
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
ansteht. Nur bei der GUI ein Knopf (E80): Neustart installiert das geladene Paket. -->
|
|
53
53
|
<div class="selbstupdate" id="selbstupdate" role="status" hidden>
|
|
54
54
|
<p id="selbstupdate-gui" hidden></p>
|
|
55
|
-
<p id="selbstupdate-cli" hidden></p>
|
|
55
|
+
<p id="selbstupdate-cli" class="warnung" hidden></p>
|
|
56
56
|
<button class="standknopf" type="button" id="selbstupdate-neustart" hidden>Jetzt neu starten</button>
|
|
57
57
|
</div>
|
|
58
58
|
|
|
@@ -2500,7 +2500,9 @@
|
|
|
2500
2500
|
Einstellungen-Knopf. Zwei getrennte Zeilen, weil beide zugleich zutreffen können: ein
|
|
2501
2501
|
geladenes GUI-Paket und eine neuere CLI auf npm sind zwei Pakete und zwei Kanäle (Gitea bzw.
|
|
2502
2502
|
npm). Nur die GUI-Zeile trägt seit E80 einen Knopf (Neustart installiert das geladene Paket),
|
|
2503
|
-
die CLI installiert die GUI nicht selbst (F82).
|
|
2503
|
+
die CLI installiert die GUI nicht selbst (F82). Die CLI-Zeile ist seit E82 eine Warnung, keine
|
|
2504
|
+
bloße Ansage: eine alte CLI (vor 0.0.7, kennt --version nicht) schreibt dieselben Dateien
|
|
2505
|
+
(state.json, verlauf.json) wie die neue GUI und kennt Bundles, Verlauf und WSL-Heime nicht. */
|
|
2504
2506
|
function selbstUpdateZeigen(nachricht) {
|
|
2505
2507
|
if (nachricht.art === 'gui') {
|
|
2506
2508
|
$('selbstupdate-gui').textContent = 'hmgr ' + nachricht.version + ' bereit — wird beim Beenden installiert';
|
|
@@ -2509,7 +2511,17 @@
|
|
|
2509
2511
|
} else if (nachricht.art === 'cli') {
|
|
2510
2512
|
var p = $('selbstupdate-cli');
|
|
2511
2513
|
p.textContent = '';
|
|
2512
|
-
|
|
2514
|
+
if (nachricht.installiert !== null) {
|
|
2515
|
+
p.appendChild(e('strong', null, 'CLI veraltet.'));
|
|
2516
|
+
p.appendChild(document.createTextNode(' hmgr-CLI ' + nachricht.installiert + ', npm hat ' + nachricht.neu + '.'));
|
|
2517
|
+
} else if (nachricht.neu !== null) {
|
|
2518
|
+
p.appendChild(e('strong', null, 'CLI veraltet.'));
|
|
2519
|
+
p.appendChild(document.createTextNode(' Die installierte hmgr-CLI ist älter als 0.0.7, npm hat ' + nachricht.neu + '.'));
|
|
2520
|
+
} else {
|
|
2521
|
+
p.appendChild(e('strong', null, 'CLI veraltet.'));
|
|
2522
|
+
p.appendChild(document.createTextNode(' Die installierte hmgr-CLI ist älter als 0.0.7.'));
|
|
2523
|
+
}
|
|
2524
|
+
p.appendChild(document.createTextNode(' Beheben im Terminal: '));
|
|
2513
2525
|
p.appendChild(e('code', null, nachricht.befehl));
|
|
2514
2526
|
p.hidden = false;
|
|
2515
2527
|
} else return;
|
|
@@ -181,6 +181,12 @@ a{color:var(--signal-tief)}
|
|
|
181
181
|
.selbstupdate p{font-size:15px;line-height:1.45;color:var(--emaille-hell)}
|
|
182
182
|
.selbstupdate code{font-family:var(--mono);font-size:14px;color:#F1F6EF;word-break:break-all}
|
|
183
183
|
|
|
184
|
+
/* E82: die CLI-Zeile ist eine Warnung, kein Hinweis — heller Kasten in Messing auf der dunklen
|
|
185
|
+
Leiste, damit sie sich vom Fließtext abhebt. */
|
|
186
|
+
.selbstupdate p.warnung{background:var(--messing-blass);color:var(--messing-satt);border-left:3px solid var(--messing);border-radius:2px;padding:6px 8px;margin:0}
|
|
187
|
+
.selbstupdate p.warnung strong{font-weight:600}
|
|
188
|
+
.selbstupdate p.warnung code{color:var(--messing-satt)}
|
|
189
|
+
|
|
184
190
|
.selbstupdate:not([hidden]) + .einstellungen{margin-top:0}
|
|
185
191
|
.einstellungen{
|
|
186
192
|
margin-top:auto;padding:14px 6px 0;display:flex;align-items:center;gap:11px;width:100%;
|