update
This commit is contained in:
29
Makefile
29
Makefile
@@ -5,9 +5,11 @@ SRC = $(CURDIR)/$(UUID)
|
|||||||
DEST = $(HOME)/.local/share/gnome-shell/extensions/$(UUID)
|
DEST = $(HOME)/.local/share/gnome-shell/extensions/$(UUID)
|
||||||
VENV = backend/.venv
|
VENV = backend/.venv
|
||||||
PORT ?= 8040
|
PORT ?= 8040
|
||||||
|
SYNC_URL = https://planer.marha.de
|
||||||
|
SYNC_JSON = $(HOME)/.local/share/desktop-app/sync.json
|
||||||
|
|
||||||
.ONESHELL:
|
.ONESHELL:
|
||||||
.PHONY: install update enable venv dev prod stop logs down test
|
.PHONY: install update enable sync-config reload venv dev prod stop logs down test
|
||||||
|
|
||||||
install:
|
install:
|
||||||
@if [ -e "$(DEST)" ]; then
|
@if [ -e "$(DEST)" ]; then
|
||||||
@@ -17,7 +19,7 @@ install:
|
|||||||
fi
|
fi
|
||||||
mkdir -p "$(dir $(DEST))"
|
mkdir -p "$(dir $(DEST))"
|
||||||
cp -r "$(SRC)" "$(DEST)"
|
cp -r "$(SRC)" "$(DEST)"
|
||||||
$(MAKE) --no-print-directory enable
|
$(MAKE) --no-print-directory enable sync-config
|
||||||
echo "Installiert. Jetzt ab- und wieder anmelden."
|
echo "Installiert. Jetzt ab- und wieder anmelden."
|
||||||
|
|
||||||
update:
|
update:
|
||||||
@@ -32,12 +34,33 @@ update:
|
|||||||
cp -r "$(SRC)" "$(DEST)"
|
cp -r "$(SRC)" "$(DEST)"
|
||||||
echo "Aktualisiert."
|
echo "Aktualisiert."
|
||||||
fi
|
fi
|
||||||
echo "Änderungen wirken nach dem nächsten Ab- und Anmelden."
|
$(MAKE) --no-print-directory sync-config reload
|
||||||
|
echo "Neuer Code wirkt nach dem nächsten Ab- und Anmelden."
|
||||||
|
|
||||||
# UUID in die aktiven Extensions eintragen, falls sie fehlt
|
# UUID in die aktiven Extensions eintragen, falls sie fehlt
|
||||||
enable:
|
enable:
|
||||||
@python3 dev/enable.py "$(UUID)"
|
@python3 dev/enable.py "$(UUID)"
|
||||||
|
|
||||||
|
# sync.json aus der .env anlegen, falls sie fehlt. Ohne .env bleibt die Extension rein lokal.
|
||||||
|
sync-config:
|
||||||
|
@if [ -f "$(SYNC_JSON)" ]; then
|
||||||
|
echo "Sync-Zugang vorhanden: $(SYNC_JSON)"
|
||||||
|
elif [ -f .env ] && grep -q "^SYNC_TOKEN=.\+" .env; then
|
||||||
|
mkdir -p "$(dir $(SYNC_JSON))"
|
||||||
|
printf '{"url": "$(SYNC_URL)", "token": "%s", "interval": 5}\n' "$$(grep ^SYNC_TOKEN= .env | cut -d= -f2-)" > "$(SYNC_JSON)"
|
||||||
|
chmod 600 "$(SYNC_JSON)"
|
||||||
|
echo "Sync-Zugang angelegt: $(SYNC_JSON)"
|
||||||
|
else
|
||||||
|
echo "Kein Sync-Zugang: .env mit SYNC_TOKEN fehlt. Extension läuft lokal."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extension aus- und einschalten, damit sie sync.json neu liest. Geht nur in einer laufenden Session.
|
||||||
|
reload:
|
||||||
|
@if gnome-extensions info $(UUID) 2>/dev/null | grep -q "ACTIVE"; then
|
||||||
|
gnome-extensions disable $(UUID) && gnome-extensions enable $(UUID)
|
||||||
|
echo "Extension neu gestartet."
|
||||||
|
fi
|
||||||
|
|
||||||
# ── Server ───────────────────────────────────────────────────────────────────
|
# ── Server ───────────────────────────────────────────────────────────────────
|
||||||
venv: $(VENV)/bin/uvicorn
|
venv: $(VENV)/bin/uvicorn
|
||||||
|
|
||||||
|
|||||||
10
README.md
10
README.md
@@ -79,11 +79,15 @@ make test # Server-Tests
|
|||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```
|
```
|
||||||
make install # kopiert die Extension nach ~/.local/share/gnome-shell/extensions und aktiviert sie
|
cp .env.example .env # SYNC_TOKEN eintragen (derselbe wie auf dem Server)
|
||||||
make update # überschreibt eine installierte Extension mit dem Stand aus diesem Ordner
|
make install # kopiert die Extension nach ~/.local/share/gnome-shell/extensions und aktiviert sie
|
||||||
|
make update # überschreibt eine installierte Extension mit dem Stand aus diesem Ordner
|
||||||
```
|
```
|
||||||
|
|
||||||
Danach ab- und wieder anmelden. Unter Wayland lädt die Shell neuen Code erst nach einem neuen Login.
|
Beide legen `~/.local/share/desktop-app/sync.json` aus der `.env` an, falls sie fehlt. Ohne `.env`
|
||||||
|
läuft die Extension rein lokal. Danach ab- und wieder anmelden. Unter Wayland lädt die Shell neuen
|
||||||
|
Code erst nach einem neuen Login. `make update` startet die Extension neu, damit ein neuer Sync-Zugang
|
||||||
|
sofort greift.
|
||||||
Voraussetzung: GNOME 46 (Ubuntu 24.04).
|
Voraussetzung: GNOME 46 (Ubuntu 24.04).
|
||||||
|
|
||||||
## Entwicklung
|
## Entwicklung
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ export class Sync {
|
|||||||
GLib.source_remove(this._timerId);
|
GLib.source_remove(this._timerId);
|
||||||
this._timerId = null;
|
this._timerId = null;
|
||||||
}
|
}
|
||||||
|
// Laufende Anfrage abbrechen, ohne das als Verbindungsfehler zu melden
|
||||||
|
this._stopped = true;
|
||||||
this._session.abort();
|
this._session.abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,6 +142,8 @@ export class Sync {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_fail(message) {
|
_fail(message) {
|
||||||
|
if (this._stopped)
|
||||||
|
return;
|
||||||
if (!this._failing)
|
if (!this._failing)
|
||||||
console.log(`desktop-app sync: ${message}`);
|
console.log(`desktop-app sync: ${message}`);
|
||||||
this._failing = true;
|
this._failing = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user