Mycroft-core: Simplifiez les commandes CLI pour arrêter et démarrer les services Mycroft

Créé le 15 sept. 2017  ·  8Commentaires  ·  Source: MycroftAI/mycroft-core

_Origine : ce problème est soulevé sur la base d'une conversation entre @kathyreid et @penrods et vise à rendre l'arrêt et le démarrage des services Mycroft plus intuitifs_

Histoires d'utilisateurs

En tant que développeur ou utilisateur en ligne de commande de Mycroft, je souhaite que le processus d'arrêt et de démarrage des services Mycroft soit intuitif, afin que je puisse me concentrer sur l'extension de la plate-forme plutôt que sur l'utilisation de base.

En tant que mainteneur principal de Mycroft, je souhaite que le processus d'arrêt et de démarrage des services Mycroft soit intuitif afin de réduire le volume de questions de « mise en route », ce qui me permet de consacrer mon temps à l'extension des fonctionnalités et au débogage des problèmes avancés.

En tant que développeur, utilisateur CLI ou mainteneur principal de Mycroft, je souhaite que le démarrage et l'arrêt des services soient intuitifs et paramétrés afin que le développement futur puisse facilement déclencher des arrêts, démarrages et redémarrages de services.

Critères d'acceptation

  • Le démarrage, l'arrêt et le redémarrage des services Mycroft suivent une syntaxe standard et intuitive. Par exemple, cela pourrait refléter la syntaxe utilisée par systemctl sur Ubuntu - le long des lignes de :
$ mycroft [action] [subservice] [parameter]

par exemple.

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

$ mycroft start voice
$ mycroft start all --quiet
  • Cette approche doit être socialisée avec la communauté des développeurs Mycroft et recherchée auprès de celle-ci.
  • La syntaxe doit être clairement documentée à la fois dans le README.md pour le référentiel mycroft-core, et également dans docs.mycroft.ai (ce sera le travail de
medium Enhancement - proposed help wanted

Commentaire le plus utile

J'aimerais proposer que nous fassions cela avec quelques scripts très faciles à trouver. À savoir:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

Lorsque vous parcourez simplement le système de fichiers, ceux-ci passeront à un novice -- "oh, c'est comme ça que vous le démarrez!"

Ensuite, je prendrais éventuellement en charge des noms de service spécifiques en tant que paramètres. Par exemple
mycroft-start.sh [tout | voix|compétences|... ]
mycroft-stop.sh [tout | voix|compétences|... ]

Il n'est pas nécessaire de redémarrer, "start" devrait arrêter tout ce qui est déjà en cours d'exécution (nous ne pouvons pas autoriser l'exécution de services en double). Aucun service n'a de paramètres, nous n'en avons donc pas besoin non plus.

Tous les 8 commentaires

J'aimerais proposer que nous fassions cela avec quelques scripts très faciles à trouver. À savoir:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

Lorsque vous parcourez simplement le système de fichiers, ceux-ci passeront à un novice -- "oh, c'est comme ça que vous le démarrez!"

Ensuite, je prendrais éventuellement en charge des noms de service spécifiques en tant que paramètres. Par exemple
mycroft-start.sh [tout | voix|compétences|... ]
mycroft-stop.sh [tout | voix|compétences|... ]

Il n'est pas nécessaire de redémarrer, "start" devrait arrêter tout ce qui est déjà en cours d'exécution (nous ne pouvons pas autoriser l'exécution de services en double). Aucun service n'a de paramètres, nous n'en avons donc pas besoin non plus.

Cela a beaucoup de sens - mes excuses, mon point de vue initial n'était pas tout à fait correct.

Je propose une interface utilisateur simple. J'étais (suis) un programmeur Windows .NET, WPF, etc., donc ma première réponse est de créer une interface utilisateur. Que diriez-vous de quelque chose de simple qui montre l'état des différents états, puis a un endroit pour entrer du texte et affiche le texte de sortie. Peut également démarrer, arrêter, peu importe. Cela ne fonctionnerait pas sur le picroft, mais ce que je pourrais faire, c'est avoir un backend qui pourrait avoir des paramètres de ligne de commande que l'interface utilisateur lirait. Je sais que tous les types de Linux aiment les lignes de commande, mais pour les artistes, les concepteurs, etc., ils apprécieraient une interface utilisateur. Python a un tas de frameworks d'interface utilisateur et si nous commencions simplement petit et faisions les choses faciles, cela pourrait progresser et finir par devenir complètement fou. Qu'en est-il ? Vous voulez que je rédige un prototype? Je cherchais quelque chose pour commencer. Cela pourrait être amusant.

Mycroft veut-il arrêter de force tout service qu'il trouve correspondant à ce qu'il essaie de démarrer ? Est-ce que cela poserait problème avec l'un des services?

De plus, je voterais pour que le nom change pour supprimer start.sh (replier dans mycroft.sh, pour tous vos besoins granulaires ?), en ajoutant start-mycroft.sh et stop-mycroft.sh.

@ highjinx411 Je suppose que vous m'en parliez à Mattermost l'autre jour. Une interface graphique est une bonne idée, mais elle ne fera pas partie de mycroft-core, qui est conçu pour être multiplateforme et (par conséquent) aussi indépendant que possible de choses comme les systèmes de gestion de fenêtres. Une interface graphique comme celle que vous proposez serait un boîtier, un peu comme "enclos-picroft", par exemple "enclosure-windows".

Si vous pouvez proposer une interface graphique vraiment multiplateforme, je serais également intéressé de la voir !

PS Je suis moi-même un vieux Windows -- j'ai fait la plupart du développement de l'interface graphique pour AutoSketch 4 à AutoSketch 10 à l'époque. J'aime une bonne interface utilisateur !

Une interface graphique multiplateforme pourrait être possible, mais elle serait probablement limitée car elle renoncerait à tous les avantages que vous obtiendriez en la rendant dépendante de la plate-forme. Ainsi, vous pourriez perdre des appels spécifiques à Windows, par exemple, ce qui pourrait être un avantage si l'application était sous Windows. Je suis d'accord qu'il devrait faire partie de l'enceinte pour s'assurer qu'il est aussi riche que possible. Même le développement d'applications « multiplateformes » avec Xamarin pour les téléphones mobiles, par exemple, contient des parties qui dépendent de la plate-forme et, à la fin, crée un exécutable spécifique pour chaque système d'exploitation de toute façon. La seule chose qui devrait être disponible pour toutes les interfaces graphiques est quelque chose dans le noyau qui expose le démarrage, l'arrêt, l'obtention du statut, etc. Ainsi, toutes les interfaces graphiques peuvent appeler les mêmes méthodes quelle que soit la plate-forme sur laquelle le noyau est installé. En fait, même juste disant que maintenant, je ne suis pas sûr que Linux fonctionne bien avec les scripts bash, mais Windows pourrait bien fonctionner via une autre méthode. Donc la question est. L'interface graphique va-t-elle examiner l'instance principale de mycroft pour sa plate-forme ? L'interface graphique Windows ne regarde que le noyau Windows et l'interface graphique Linux ne regarde que le noyau Linux ? Ou est-ce que l'interface graphique de Windows pourrait avoir une adresse IP comme entrée et accéder au noyau partout où cette adresse IP est installée, quel que soit le système d'exploitation ?

Je crois que PR #1107 devrait faire l'affaire. Qu'en penses- @KathyReid , ferme celui-ci ?

D'accord @penrods , en fermant ce problème.

Cette page vous a été utile?
0 / 5 - 0 notes