Mycroft-core: 简化用于停止和启动 Mycroft 服务的 CLI 命令

创建于 2017-09-15  ·  8评论  ·  资料来源: MycroftAI/mycroft-core

_起源:这个问题是根据@kathyreid@penrods的对话提出的,旨在使停止和启动 Mycroft 服务更加直观

用户故事

作为 Mycroft 的开发人员或命令行用户,我希望停止和启动 Mycroft 服务的过程是直观的,以便我可以专注于扩展平台而不是基本用法。

作为 Mycroft 的核心维护者,我希望停止和启动 Mycroft 服务的过程是直观的,以便减少“入门”问题的数量,让我能够将时间集中在扩展功能和调试高级问题上

作为 Mycroft 的开发人员、CLI 用户或核心维护人员,我希望启动和停止服务能够直观且参数化,以便未来的开发可以轻松触发服务停止、启动和重启。

验收标准

  • 启动、停止和重新启动 Mycroft 服务遵循标准、直观的语法。 例如,这可以反映systemctl在 Ubuntu 上使用的语法 - 沿着以下几行:
$ mycroft [action] [subservice] [parameter]

例如。

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

$ mycroft start voice
$ mycroft start all --quiet
  • 这种方法应该与 Mycroft 开发人员社区进行交流并征求他们的意见
  • 语法应该清楚地记录在 mycroft-core 存储库的 README.md 和 docs.mycroft.ai 中(这将是@kathyreid的工作)
medium Enhancement - proposed help wanted

最有用的评论

我想建议我们用几个非常容易找到的脚本来做到这一点。 即:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

刚刚浏览文件系统时,这些会跳出来给新手——“哦,这就是你开始的方式!”

然后我可以选择支持特定的服务名称作为参数。 例如
mycroft-start.sh [全部 | 声音|技能|...]
mycroft-stop.sh [全部 | 声音|技能|...]

不需要重新启动,“启动”应该停止任何已经在运行的东西(我们不能允许重复的服务运行)。 没有服务有参数,所以我们也不需要它。

所有8条评论

我想建议我们用几个非常容易找到的脚本来做到这一点。 即:
$ ./mycroft-start.sh
$ ./mycroft-stop.sh

刚刚浏览文件系统时,这些会跳出来给新手——“哦,这就是你开始的方式!”

然后我可以选择支持特定的服务名称作为参数。 例如
mycroft-start.sh [全部 | 声音|技能|...]
mycroft-stop.sh [全部 | 声音|技能|...]

不需要重新启动,“启动”应该停止任何已经在运行的东西(我们不能允许重复的服务运行)。 没有服务有参数,所以我们也不需要它。

这很有意义 - 很抱歉我最初对此的看法不太正确。

我提出了一个简单的用户界面。 我是一名 Windows .NET、WPF 等程序员,所以我最初的反应是制作一个 UI。 如何简单地显示各种状态的状态,然后有一个地方可以输入文本并显示输出文本。 也可以开始,停止,随便。 这在 picroft 上不起作用,但我可以做的是拥有一个后端,该后端可以具有 UI 将读取的命令行参数。 我知道你们所有的 Linux 类型都喜欢命令行,但对于艺术家、设计师等来说,他们会喜欢 UI。 Python 有一堆 UI 框架,如果我们只是从小做起,做一些简单的事情,它可能会进步,最终会变得疯狂..怎么样? 要我起草一个原型吗? 我一直在寻找可以开始的东西。 这可能很有趣。

mycroft 是否想强行停止它发现的与它试图启动的任何服务相匹配的任何服务? 这对任何服务都会有问题吗?

此外,我会投票支持名称更改,以删除 start.sh(折叠到 mycroft.sh,以满足您的所有细粒度需求?),添加 start-mycroft.sh 和 stop-mycroft.sh。

@highjinx411我猜你前几天在 Mattermost 上和我讨论过这个问题。 GUI 是一个好主意,但它不会成为 mycroft-core 的一部分,它旨在跨平台并且(因此)尽可能独立于窗口管理系统之类的东西。 像您提议的 GUI 将是一个外壳,很像“enclosure-picroft”,例如“enclosure-windows”。

如果您能想出一个真正跨平台的 GUI,我也很想看看!

PS 我自己是一个老 Windows 人——我在当天完成了 AutoSketch 4 到 AutoSketch 10 的大部分 GUI 开发。 我喜欢一个好的用户界面!

跨平台 GUI 是可能的,但它可能会受到限制,因为它会放弃您从使其依赖于平台而获得的任何好处。 因此,例如,如果应用程序在 Windows 上,您可能会丢失特定于 Windows 的调用,这可能是一个好处。 我同意它应该是外壳的一部分,以确保它尽可能丰富。 例如,即使使用 Xamarin 为手机开发“跨”平台应用程序,其中也包含依赖于平台的部分,最终还是为每个操作系统构建特定的可执行文件。 唯一应该对所有 GUI 可用的是内核中公开启动、停止、获取状态等的东西。因此,无论内核安装在哪个平台上,所有 GUI 都可以调用相同的方法..实际上甚至只是说现在我不确定 Linux 在 bash 脚本方面做得很好,但 Windows 可以通过其他方法做得很好。 所以问题是。 GUI 是否会查看其平台的 mycroft 核心实例? windows GUI只看windows核心,Linux GUI只看Linux核心? 或者,Windows gui 是否可以将 IP 作为输入并访问安装了 IP 的任何操作系统的核心?

我相信 PR #1107 应该可以解决问题。 怎么想, @KathyReid ,关闭这个?

同意@penrods ,关闭此问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

tmajibon picture tmajibon  ·  9评论

fermulator picture fermulator  ·  6评论

InconsolableCellist picture InconsolableCellist  ·  8评论

krisgesling picture krisgesling  ·  3评论

beemorris picture beemorris  ·  6评论