#command #file #packets #watch #modified #receiving #upon

app witness

当文件被修改或在接收 TCP/UDP 数据包时运行命令

3 个版本 (重大更新)

0.3.0 2022 年 4 月 13 日
0.2.0 2022 年 4 月 11 日
0.1.0 2022 年 4 月 11 日

#12 in #receiving

MIT 许可证

31KB
655 代码行

Witness

命令行实用工具,允许您在响应以下情况时执行任意命令:

  • 文件更改
  • UDP 数据包和 TCP 连接

安装

使用 Cargo

这需要安装 Rust 工具链。(安装指南).

cargo install witness

动机

在编写代码时,通常需要您在编辑文件的同时运行编译器/构建工具,以便捕捉错误。在编辑器和终端之间切换来回可能会很快变得乏味且耗时。

witness 帮助加快这个工作流程:您只需保存当前正在工作的文件,然后监视命令运行。

用法

等待文件被修改并运行您选择的构建工具

$ witness cargo build

仅监视具有这些特定扩展名的文件

$ witness -e rs cargo build

监视特定目录内的文件

$ witness --path src cargo build

请注意,任何放在引号("...")内的内容都将传递到您的默认 shell,这意味着您在终端中熟悉的所有内容在这里也可以使用!这包括管道,如果您想首先查看错误,这可能很有用。

witness "cargo check |& less"

其他触发器

witness 是基于这样一个想法构建的:您可能拥有比仅仅编辑-编译-调试更复杂的流程。除了文件系统更改外,witness 还可以配置为在 UDP 和 TCP 套接字上查找 IP 请求。如果您需要在单个终端中运行的命令触发其他终端中的命令,这可能很有用。

以下我们将探讨一个典型的工作流程,该流程涉及使用 Web 服务器。对于此用例,我们保持一个终端用于编辑-编译-调试工作流程,另一个终端用于在后台实际运行我们的服务器。

在我们的服务器运行终端中,我们运行以下命令:

$ witness --udp=1234 cargo run

这告诉 witness 每次在端口 1234 上收到 UDP 数据包时重建并重新运行您的服务器。

在我们的另一个终端中,然后运行以下命令:

$ witness "cargo check && witness --trigger --udp=1234"

这将反复运行 cargo check,因为我们对代码进行更改。如果我们的代码成功编译,witness 就会通过向端口 1234 发送 UDP 数据包来触发另一个终端。

依赖项

~9–21MB
~259K SLoC