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
+28
-8
@@ -5,12 +5,14 @@
|
||||
# Notationstext eines geteilten Plans (D76) bekommt so eine Git-Historie.
|
||||
#
|
||||
# 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-Worktree liegen; committet wird nur diese eine Datei,
|
||||
# die Commit-Nachricht nennt Datum, Titel und Version des
|
||||
# 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
|
||||
# (https://…/api/v1/documents/<uuid>) — oder gleich der
|
||||
# geteilte Editor-Link (…?live=<adresse>); der Parameter
|
||||
@@ -26,14 +28,19 @@
|
||||
|
||||
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
|
||||
case "${1:-}" in
|
||||
-h|--help) usage; exit 0;;
|
||||
--git-commit) do_commit=1; shift;;
|
||||
esac
|
||||
[ $# -eq 2 ] || { echo "Fehler: erwartet [--git-commit] URL und Zieldatei." >&2; echo >&2; usage >&2; exit 2; }
|
||||
do_commit=0; do_open=0
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
-h|--help) usage; exit 0;;
|
||||
--git-commit) do_commit=1; shift;;
|
||||
--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"
|
||||
|
||||
@@ -87,12 +94,24 @@ PY
|
||||
)"
|
||||
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
|
||||
# zusaetzlich in git sauber, sonst bliebe eine liegende Aenderung (etwa aus
|
||||
# einem Lauf ohne --git-commit) fuer immer uncommittet.
|
||||
if [ -f "$target" ] && cmp -s "$tmp_doc" "$target"; then
|
||||
if [ "$do_commit" != 1 ] || [ -z "$(git -C "$dir" status --porcelain -- "$base")" ]; then
|
||||
echo "Unverändert: „$title“ (Version $version) — nichts zu tun."
|
||||
open_target
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
@@ -106,3 +125,4 @@ if [ "$do_commit" = 1 ]; then
|
||||
else
|
||||
echo "Geschrieben: $target — „$title“ (Version $version)"
|
||||
fi
|
||||
open_target
|
||||
|
||||
Reference in New Issue
Block a user