Mycroft-core: CLI-Befehle zum Stoppen und Starten von Mycroft-Diensten vereinfachen

Erstellt am 15. Sept. 2017  ·  8Kommentare  ·  Quelle: MycroftAI/mycroft-core

_Ursprung: Dieses Problem wird basierend auf einer Konversation s/w @kathyreid und @penrods angesprochen und zielt darauf ab, das Stoppen und Starten von Mycroft-Diensten intuitiver zu

Benutzergeschichten

Als Entwickler oder Befehlszeilenbenutzer von Mycroft möchte ich, dass der Prozess zum Stoppen und Starten von Mycroft-Diensten intuitiv ist, damit ich mich auf die Erweiterung der Plattform statt auf die grundlegende Nutzung konzentrieren kann.

Als Hauptverwalter von Mycroft möchte ich, dass der Prozess zum Stoppen und Starten von Mycroft-Diensten intuitiv ist, damit die Anzahl der Fragen zum Einstieg reduziert wird, damit ich mich auf die Erweiterung der Funktionalität und das Debuggen fortgeschrittener Probleme konzentrieren kann

Als Entwickler, CLI-Benutzer oder Core-Maintainer von Mycroft möchte ich, dass das Starten und Stoppen von Diensten intuitiv und parametrisiert ist, damit zukünftige Entwicklungen problemlos Dienststopps, -starts und -neustarts auslösen können.

Akzeptanzkriterium

  • Das Starten, Stoppen und Neustarten von Mycroft-Diensten folgt einer standardmäßigen, intuitiven Syntax. Dies könnte zum Beispiel die Syntax widerspiegeln, die von systemctl unter Ubuntu verwendet wird - in etwa wie folgt:
$ mycroft [action] [subservice] [parameter]

z.B.

$ mycroft start all
$ mycroft stop all
$ mycroft restart all

$ mycroft start voice
$ mycroft start all --quiet
  • Dieser Ansatz sollte mit der Mycroft-Entwickler-Community sozialisiert und um Input gebeten werden
  • Die Syntax sollte sowohl in der README.md für das mycroft-core Repository als auch in docs.mycroft.ai klar dokumentiert sein (dies ist die Aufgabe von @kathyreid )
medium Enhancement - proposed help wanted

Hilfreichster Kommentar

Ich möchte vorschlagen, dass wir dies mit ein paar sehr auffindbaren Skripten tun. Nämlich:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

Wenn Sie nur das Dateisystem durchsuchen, werden diese für einen Anfänger herausspringen - "Oh, so fängt man es an!"

Dann würde ich optional bestimmte Dienstnamen als Parameter unterstützen. Z.B
mycroft-start.sh [alle | Stimme|Fähigkeiten|... ]
mycroft-stop.sh [alle | Stimme|Fähigkeiten|... ]

Es ist kein Neustart erforderlich, "start" sollte alles stoppen, was bereits ausgeführt wird (wir können nicht zulassen, dass doppelte Dienste ausgeführt werden). Keine Dienste haben Parameter, also brauchen wir das auch nicht.

Alle 8 Kommentare

Ich möchte vorschlagen, dass wir dies mit ein paar sehr auffindbaren Skripten tun. Nämlich:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

Wenn Sie nur das Dateisystem durchsuchen, werden diese für einen Anfänger herausspringen - "Oh, so fängt man es an!"

Dann würde ich optional bestimmte Dienstnamen als Parameter unterstützen. Z.B
mycroft-start.sh [alle | Stimme|Fähigkeiten|... ]
mycroft-stop.sh [alle | Stimme|Fähigkeiten|... ]

Es ist kein Neustart erforderlich, "start" sollte alles stoppen, was bereits ausgeführt wird (wir können nicht zulassen, dass doppelte Dienste ausgeführt werden). Keine Dienste haben Parameter, also brauchen wir das auch nicht.

Das macht sehr viel Sinn - entschuldigen Sie, dass meine anfängliche Meinung dazu nicht ganz richtig war.

Ich schlage eine einfache Benutzeroberfläche vor. Ich war (bin) ein Windows .NET-, WPF- usw. Programmierer, also ist meine erste Reaktion, eine Benutzeroberfläche zu erstellen. Wie wäre es mit etwas Einfachem, das den Status der verschiedenen Zustände anzeigt und dann einen Platz zum Eingeben von Text bietet und Ausgabetext anzeigt. Kann auch starten, stoppen, was auch immer. Dies würde auf dem Picroft nicht funktionieren, aber ich könnte ein Backend haben, das Befehlszeilenparameter haben könnte, die die Benutzeroberfläche lesen würde. Ich weiß, dass alle Linux-Typen Befehlszeilen lieben, aber für die Künstler, Designer usw. da draußen würden sie sich über eine Benutzeroberfläche freuen. Python hat eine Reihe von UI-Frameworks und wenn wir nur klein anfangen und die einfachen Dinge tun, könnte es voranschreiten und schließlich ganz verrückt werden. Wie wäre es damit? Soll ich einen Prototyp entwerfen? Ich habe nach etwas gesucht, mit dem ich anfangen kann. Das könnte Spaß machen.

Möchte mycroft gewaltsam jeden Dienst stoppen, den es findet, der mit dem übereinstimmt, was es zu starten versucht? Wäre dies bei einem der Dienste problematisch?

Außerdem würde ich für die Namensänderungen stimmen, um start.sh zu entfernen (in mycroft.sh für alle Ihre granularen Bedürfnisse einklappen?), indem start-mycroft.sh und stop-mycroft.sh hinzugefügt werden.

@highjinx411 Ich

Wenn Sie eine wirklich plattformübergreifende GUI entwickeln können, wäre ich auch daran interessiert, sie zu sehen!

PS Ich bin selbst ein alter Windows-Typ -- ich habe damals den größten Teil der GUI-Entwicklung für AutoSketch 4 bis AutoSketch 10 gemacht. Ich liebe eine gute Benutzeroberfläche!

Eine plattformübergreifende GUI könnte möglich sein, aber sie wäre wahrscheinlich begrenzt, da sie alle Vorteile aufgeben würde, die Sie durch eine Plattformabhängigkeit erhalten würden. So können Sie beispielsweise Windows-spezifische Anrufe verlieren, die von Vorteil sein könnten, wenn die App unter Windows läuft. Ich stimme zu, dass es Teil des Gehäuses sein sollte, um sicherzustellen, dass es so reich wie möglich ist. Sogar die Entwicklung von "Cross"-Plattform-Apps mit Xamarin für Mobiltelefone enthält beispielsweise Teile, die plattformabhängig sind und am Ende sowieso eine spezifische ausführbare Datei für jedes Betriebssystem erstellen. Das einzige, was für alle GUIs verfügbar sein sollte, ist etwas im Kern, das Start, Stopp, Status abrufen usw. offenlegt. Alle GUIs können also die gleichen Methoden aufrufen, unabhängig davon, auf welcher Plattform der Kern installiert ist. Eigentlich sogar nur Ich bin mir nicht sicher, ob Linux mit Bash-Skripten gut funktioniert, aber Windows könnte mit einer anderen Methode gut abschneiden. Die Frage ist also. Wird die GUI die Mycroft-Kerninstanz für ihre Plattform untersuchen? Die Windows-GUI betrachtet nur den Windows-Kern und die Linux-GUI nur den Linux-Kern? Oder könnte es sein, dass die Windows-GUI eine IP als Eingabe hat und auf den Core zugreift, wo immer diese IP installiert ist, unabhängig vom Betriebssystem?

Ich glaube, PR #1107 sollte den Zweck erfüllen. Was denkst @KathyReid , schließe dieses?

Stimmt @penrods zu und schließt dieses Problem.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

Y0ngg4n picture Y0ngg4n  ·  10Kommentare

beemorris picture beemorris  ·  6Kommentare

Ahmed-Benj picture Ahmed-Benj  ·  7Kommentare

el-tocino picture el-tocino  ·  4Kommentare

InconsolableCellist picture InconsolableCellist  ·  8Kommentare