feat(tools): pull-doc --open öffnet die Datei danach in IntelliJ IDEA (D88-Nachtrag 2)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
78e2eeb616
commit
e684ac73d3
+2
-2
@@ -131,8 +131,8 @@ gewöhnliches Label. Die Marke bleibt stehen, bis jemand sie löscht.
|
|||||||
<datei>` holt das Dokument (auch ein `?live=`-Link funktioniert) und schreibt
|
<datei>` holt das Dokument (auch ein `?live=`-Link funktioniert) und schreibt
|
||||||
es in die Datei; mit `--git-commit` wird es zusätzlich in das git-Worktree der
|
es in die Datei; mit `--git-commit` wird es zusätzlich in das git-Worktree der
|
||||||
Datei committet — Datum, Titel und Version in der Nachricht, kein Commit ohne
|
Datei committet — Datum, Titel und Version in der Nachricht, kein Commit ohne
|
||||||
Änderung. Per Cron aufgerufen archiviert sich der Plan von selbst; siehe
|
Änderung. Per Cron aufgerufen archiviert sich der Plan von selbst; `--open`
|
||||||
`docs/DECISIONS.md` D88.
|
öffnet die Datei danach in IntelliJ IDEA. Siehe `docs/DECISIONS.md` D88.
|
||||||
|
|
||||||
Das Backend einrichten: siehe [backend/README.md](backend/README.md) und
|
Das Backend einrichten: siehe [backend/README.md](backend/README.md) und
|
||||||
`docs/DECISIONS.md` D76.
|
`docs/DECISIONS.md` D76.
|
||||||
|
|||||||
@@ -125,7 +125,8 @@ deletes it.
|
|||||||
fetches the document (a `?live=` link works too) and writes it to the file;
|
fetches the document (a `?live=` link works too) and writes it to the file;
|
||||||
with `--git-commit` it also commits it into the file's git worktree — date,
|
with `--git-commit` it also commits it into the file's git worktree — date,
|
||||||
title and version in the message, and no commit when nothing changed. Run it
|
title and version in the message, and no commit when nothing changed. Run it
|
||||||
from cron and the plan archives itself; see `docs/DECISIONS.md` D88.
|
from cron and the plan archives itself; `--open` opens the file in IntelliJ
|
||||||
|
IDEA afterwards. See `docs/DECISIONS.md` D88.
|
||||||
|
|
||||||
Setting up the backend: see [backend/README.md](backend/README.md) and
|
Setting up the backend: see [backend/README.md](backend/README.md) and
|
||||||
`docs/DECISIONS.md` D76.
|
`docs/DECISIONS.md` D76.
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ reverse.
|
|||||||
|
|
||||||
## 2026-08-27
|
## 2026-08-27
|
||||||
|
|
||||||
|
- `pull-doc --open` opens the fetched document in IntelliJ IDEA afterwards — also when nothing changed
|
||||||
- A dead live session now reconnects by itself — unsent text stays in the editor and goes out as a diff once the server answers again
|
- A dead live session now reconnects by itself — unsent text stays in the editor and goes out as a diff once the server answers again
|
||||||
- The connection state stands next to the document name: disconnected or unsent changes turn the kind label amber, instead of only a warning below the diagram
|
- The connection state stands next to the document name: disconnected or unsent changes turn the kind label amber, instead of only a warning below the diagram
|
||||||
- The document kind now stands in grey behind the name chip — Included, Local or Shared with the server's host, the same words as the menu groups
|
- The document kind now stands in grey behind the name chip — Included, Local or Shared with the server's host, the same words as the menu groups
|
||||||
|
|||||||
@@ -7793,3 +7793,16 @@ getippt; Backend gestartet, **nichts geklickt** → nach ≤ 20 s Chip wieder
|
|||||||
leer — die Netze räumen sich selbst weg. Der Ungesendet-Zustand
|
leer — die Netze räumen sich selbst weg. Der Ungesendet-Zustand
|
||||||
(Sitzung lebt, Patches scheitern) färbt den Chip ebenso; gemessen mit dem
|
(Sitzung lebt, Patches scheitern) färbt den Chip ebenso; gemessen mit dem
|
||||||
Fehler-Anker gegen die Timer-Drosselung.
|
Fehler-Anker gegen die Timer-Drosselung.
|
||||||
|
|
||||||
|
**Nachtrag 2 — `--open` öffnet die Datei danach in IntelliJ IDEA.**
|
||||||
|
Nutzerwunsch; als eigener Schalter neben `--git-commit` (beide in beliebiger
|
||||||
|
Reihenfolge vor den Argumenten, unbekannte Schalter sind ein lauter Fehler).
|
||||||
|
Geöffnet wird **auch Unverändertes** — wer `--open` sagt, will die Datei
|
||||||
|
sehen, nicht nur ihren Wandel. Der Aufruf läuft als `(idea … &)` in einer
|
||||||
|
Subshell, damit der Lauf nicht am Editor hängt; fehlt `idea` im PATH, gibt es
|
||||||
|
einen Hinweis auf stderr, aber Exit 0 — der eigentliche Auftrag (holen,
|
||||||
|
committen) ist gelungen, und ein gedruckter Hinweis ist kein stiller Fehler.
|
||||||
|
Nachgemessen mit einem Log-Stub im PATH: `--git-commit --open` committet und
|
||||||
|
öffnet, `--open` allein öffnet auch den unveränderten Stand, ohne Schalter
|
||||||
|
kein Aufruf, ohne `idea` im PATH der Hinweis, `--commit` (Tippfehler) bricht
|
||||||
|
mit Meldung ab.
|
||||||
|
|||||||
+28
-8
@@ -5,12 +5,14 @@
|
|||||||
# Notationstext eines geteilten Plans (D76) bekommt so eine Git-Historie.
|
# Notationstext eines geteilten Plans (D76) bekommt so eine Git-Historie.
|
||||||
#
|
#
|
||||||
# Verwendung:
|
# Verwendung:
|
||||||
# pull-doc [--git-commit] <dokument-url> <zieldatei>
|
# pull-doc [--git-commit] [--open] <dokument-url> <zieldatei>
|
||||||
#
|
#
|
||||||
# --git-commit Die Zieldatei zusätzlich committen. Sie muss dann in einem
|
# --git-commit Die Zieldatei zusätzlich committen. Sie muss dann in einem
|
||||||
# git-Worktree liegen; committet wird nur diese eine Datei,
|
# git-Worktree liegen; committet wird nur diese eine Datei,
|
||||||
# die Commit-Nachricht nennt Datum, Titel und Version des
|
# die Commit-Nachricht nennt Datum, Titel und Version des
|
||||||
# Server-Stands. Ohne den Schalter wird nur geschrieben.
|
# Server-Stands. Ohne den Schalter wird nur geschrieben.
|
||||||
|
# --open Die Zieldatei danach mit `idea` (IntelliJ IDEA) öffnen —
|
||||||
|
# auch wenn sie unverändert war.
|
||||||
# <dokument-url> Die Dokument-Adresse des Backends
|
# <dokument-url> Die Dokument-Adresse des Backends
|
||||||
# (https://…/api/v1/documents/<uuid>) — oder gleich der
|
# (https://…/api/v1/documents/<uuid>) — oder gleich der
|
||||||
# geteilte Editor-Link (…?live=<adresse>); der Parameter
|
# geteilte Editor-Link (…?live=<adresse>); der Parameter
|
||||||
@@ -26,14 +28,19 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
usage(){ sed -n '2,24p' "$0" | sed 's/^# \{0,1\}//'; }
|
usage(){ sed -n '2,26p' "$0" | sed 's/^# \{0,1\}//'; }
|
||||||
|
|
||||||
do_commit=0
|
do_commit=0; do_open=0
|
||||||
case "${1:-}" in
|
while [ $# -gt 0 ]; do
|
||||||
-h|--help) usage; exit 0;;
|
case "$1" in
|
||||||
--git-commit) do_commit=1; shift;;
|
-h|--help) usage; exit 0;;
|
||||||
esac
|
--git-commit) do_commit=1; shift;;
|
||||||
[ $# -eq 2 ] || { echo "Fehler: erwartet [--git-commit] URL und Zieldatei." >&2; echo >&2; usage >&2; exit 2; }
|
--open) do_open=1; shift;;
|
||||||
|
--*) echo "Fehler: unbekannter Schalter $1" >&2; echo >&2; usage >&2; exit 2;;
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
[ $# -eq 2 ] || { echo "Fehler: erwartet [--git-commit] [--open] URL und Zieldatei." >&2; echo >&2; usage >&2; exit 2; }
|
||||||
|
|
||||||
url="$1"; target="$2"
|
url="$1"; target="$2"
|
||||||
|
|
||||||
@@ -87,12 +94,24 @@ PY
|
|||||||
)"
|
)"
|
||||||
title="${meta%$'\t'*}"; version="${meta##*$'\t'}"
|
title="${meta%$'\t'*}"; version="${meta##*$'\t'}"
|
||||||
|
|
||||||
|
# Geoeffnet wird auch Unveraendertes — wer --open sagt, will die Datei sehen.
|
||||||
|
# `idea` forkt sich selbst; das Subshell-& haelt den Lauf trotzdem frei davon.
|
||||||
|
open_target(){
|
||||||
|
[ "$do_open" = 1 ] || return 0
|
||||||
|
if command -v idea >/dev/null; then
|
||||||
|
(idea "$target" >/dev/null 2>&1 &)
|
||||||
|
else
|
||||||
|
echo "Hinweis: 'idea' nicht im PATH — Datei nicht geöffnet." >&2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Unveraendert heisst: Datei gleich dem Server-Stand — und im Commit-Modus
|
# Unveraendert heisst: Datei gleich dem Server-Stand — und im Commit-Modus
|
||||||
# zusaetzlich in git sauber, sonst bliebe eine liegende Aenderung (etwa aus
|
# zusaetzlich in git sauber, sonst bliebe eine liegende Aenderung (etwa aus
|
||||||
# einem Lauf ohne --git-commit) fuer immer uncommittet.
|
# einem Lauf ohne --git-commit) fuer immer uncommittet.
|
||||||
if [ -f "$target" ] && cmp -s "$tmp_doc" "$target"; then
|
if [ -f "$target" ] && cmp -s "$tmp_doc" "$target"; then
|
||||||
if [ "$do_commit" != 1 ] || [ -z "$(git -C "$dir" status --porcelain -- "$base")" ]; then
|
if [ "$do_commit" != 1 ] || [ -z "$(git -C "$dir" status --porcelain -- "$base")" ]; then
|
||||||
echo "Unverändert: „$title“ (Version $version) — nichts zu tun."
|
echo "Unverändert: „$title“ (Version $version) — nichts zu tun."
|
||||||
|
open_target
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -106,3 +125,4 @@ if [ "$do_commit" = 1 ]; then
|
|||||||
else
|
else
|
||||||
echo "Geschrieben: $target — „$title“ (Version $version)"
|
echo "Geschrieben: $target — „$title“ (Version $version)"
|
||||||
fi
|
fi
|
||||||
|
open_target
|
||||||
|
|||||||
Reference in New Issue
Block a user