Mycroft-core: Simplifique os comandos CLI para interromper e iniciar os serviços Mycroft

Criado em 15 set. 2017  ·  8Comentários  ·  Fonte: MycroftAI/mycroft-core

_Origin: Este problema está sendo levantado com base em uma conversa b / w @kathyreid e @penrods e visa tornar a interrupção e inicialização dos serviços Mycroft mais intuitiva_

Histórias de usuários

Como desenvolvedor ou usuário de

Como mantenedor principal do Mycroft, quero que o processo para interromper e iniciar os serviços Mycroft seja intuitivo, de modo que o volume de perguntas de 'Introdução' seja reduzido, permitindo que eu concentre meu tempo em estender a funcionalidade e depurar problemas avançados

Como desenvolvedor, usuário CLI ou mantenedor principal do Mycroft, desejo iniciar e interromper serviços de forma intuitiva e parametrizada para que o desenvolvimento futuro possa facilmente acionar interrupções, inicializações e reinicializações de serviços.

Critérios de aceitação

  • Iniciar, interromper e reiniciar os serviços Mycroft segue uma sintaxe intuitiva padrão. Por exemplo, isso poderia espelhar a sintaxe usada por systemctl no Ubuntu - ao longo das linhas de:
$ mycroft [action] [subservice] [parameter]

por exemplo.

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

$ mycroft start voice
$ mycroft start all --quiet
  • Essa abordagem deve ser socializada e deve ser buscada a opinião da comunidade Mycroft Developer
  • A sintaxe deve ser claramente documentada no README.md para o repositório mycroft-core e também em docs.mycroft.ai (este será o trabalho de @kathyreid )
medium Enhancement - proposed help wanted

Comentários muito úteis

Eu gostaria de propor que façamos isso com alguns scripts muito fáceis de encontrar. Nomeadamente:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

Ao apenas navegar no sistema de arquivos, eles irão saltar para um novato - "oh, é assim que você começa!"

Então, opcionalmente, ofereceria suporte a nomes de serviços específicos como parâmetros. Por exemplo
mycroft-start.sh [todos | voz | habilidades | ...]
mycroft-stop.sh [todos | voz | habilidades | ...]

Não há necessidade de reiniciar, "start" deve interromper tudo o que já está em execução (não podemos permitir a execução de serviços duplicados). Nenhum serviço tem parâmetros, então também não precisamos disso.

Todos 8 comentários

Eu gostaria de propor que façamos isso com alguns scripts muito fáceis de encontrar. Nomeadamente:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

Ao apenas navegar no sistema de arquivos, eles irão saltar para um novato - "oh, é assim que você começa!"

Então, opcionalmente, ofereceria suporte a nomes de serviços específicos como parâmetros. Por exemplo
mycroft-start.sh [todos | voz | habilidades | ...]
mycroft-stop.sh [todos | voz | habilidades | ...]

Não há necessidade de reiniciar, "start" deve interromper tudo o que já está em execução (não podemos permitir a execução de serviços duplicados). Nenhum serviço tem parâmetros, então também não precisamos disso.

Isso faz muito sentido - desculpas, minha opinião inicial sobre isso não estava muito certa.

Proponho uma interface de usuário simples. Eu era (sou) um programador do Windows .NET, WPF, etc, então minha resposta inicial é fazer uma IU. Que tal algo simples que mostra o status dos vários estados e, em seguida, tem um lugar para inserir texto e mostra o texto de saída. Também pode começar, parar, o que for. Isso não funcionaria no picroft, mas o que eu poderia fazer é ter um back-end que pudesse ter parâmetros de linha de comando que a IU iria ler. Eu sei que todos os tipos de Linux adoram linhas de comando, mas para os artistas, designers, etc., eles gostariam de uma IU. Python tem um monte de estruturas de interface do usuário e se nós apenas começássemos pequeno e fizéssemos as coisas fáceis, ele poderia progredir e, eventualmente, ser uma loucura. Que tal? Quer que eu desenhe um protótipo? Tenho procurado algo para começar. Isso pode ser divertido.

O mycroft deseja interromper à força qualquer serviço que encontrar que corresponda ao que quer que esteja tentando iniciar? Isso seria problemático com algum dos serviços?

Também votaria nas mudanças de nome para remover start.sh (dobrar em mycroft.sh, para todas as suas necessidades granulares?), Adicionando start-mycroft.sh e stop-mycroft.sh.

@ highjinx411 Acho que você estava falando comigo sobre isso no Mattermost outro dia. Uma GUI é uma boa ideia, mas não fará parte do mycroft-core, que se destina a ser multiplataforma e (consequentemente) o mais independente possível de coisas como sistemas de gerenciamento de janelas. Uma GUI como a que você está propondo seria um gabinete, muito parecido com "gabinete-picroft", por exemplo, "gabinete-janelas".

Se você puder criar uma GUI verdadeiramente multiplataforma, também estaria interessado em vê-la!

PS Eu mesmo sou um velho cara do Windows - fiz a maior parte do desenvolvimento de GUI para AutoSketch 4 a AutoSketch 10 naquela época. Eu amo uma boa interface de usuário!

Uma interface gráfica de plataforma cruzada poderia ser possível, mas provavelmente seria limitada, pois abriria mão de quaisquer benefícios que você obteria ao torná-la dependente da plataforma. Portanto, você pode perder chamadas específicas do Windows, por exemplo, que podem ser uma vantagem se o aplicativo estiver no Windows. Concordo que deve fazer parte do recinto para garantir que seja o mais rico possível. Mesmo desenvolvendo aplicativos de plataforma "cruzada" com Xamarin para telefones móveis, por exemplo, tem partes que são dependentes da plataforma e no final constroem um executável específico para cada sistema operacional de qualquer maneira. A única coisa que deve estar disponível para todas as GUIs é algo no núcleo que expõe iniciar, parar, obter status etc. Assim, todas as GUIs podem chamar os mesmos métodos, independentemente da plataforma em que o núcleo está instalado. Na verdade, até mesmo apenas dizendo isso agora não tenho certeza, pois o Linux se sai bem com scripts bash, mas o Windows poderia se sair bem por meio de algum outro método. Então a questão é. A GUI examinará a instância do núcleo mycroft para sua plataforma? A GUI do Windows apenas olha para o núcleo do Windows e a GUI do Linux apenas olha para o núcleo do Linux? Ou poderia ser o Windows gui poderia ter um IP como uma entrada e acessa o núcleo onde quer que o IP esteja instalado, independentemente do sistema operacional?

Acredito que PR # 1107 deve resolver o problema. O que você acha, @KathyReid , feche este?

@Penrods acordado, encerrando este problema.

Esta página foi útil?
0 / 5 - 0 avaliações