#docker-compose #command #logs #terminal #multiple #single #tool

app shunt

使用Docker Compose类似的方式,在单个终端中运行多个命令,如日志

4个版本 (重大更新)

0.4.0 2023年2月24日
0.3.0 2023年2月19日
0.2.0 2023年2月19日
0.1.0 2023年2月19日

#828Unix API

每月 22 次下载

MIT/Apache

10MB
177K SLoC

Python 176K SLoC // 0.2% comments Rust 258 SLoC // 0.0% comments PowerShell 104 SLoC // 0.5% comments Shell 31 SLoC // 0.2% comments Forge Config 3 SLoC

包含 (Python包,475KB) setuptools-44.1.1-py2.py3-none-any.whl,(Python包,315KB) pip-20.3.4-py2.py3-none-any.whl,(Python包,165KB) certifi-2020.6.20-py2.py3-none-any.whl,(Python包,175KB) chardet-4.0.0-py2.py3-none-any.whl,(Python包,150KB) distlib-0.3.1-py2.py3-none-any.whl,(Python包,135KB) urllib3-1.26.5-py2.py3-none-any.whl 等等.

Shunt

你是否曾想在同一个终端中运行多个命令,并希望有Docker Compose风格的日志输出?那么这个工具就是为你准备的。

在一个JSON(实际上是JSON5)文件中配置你想要的命令

// dev.json
{
  commands: {
    ui: ["npm", "run", "dev"],
    backend: ["cargo", "run"],
  },
}

运行 shunt dev.json 看到你的输出像Docker Compose一样整洁地编织在一起。

工作目录

你可以设置命令运行的工作目录,相对路径相对于 JSON配置

{
  "commands": {
    "ui": {
      "argv": ["npm", "run", "dev"],
      "workdir": "frontend"
    }
  }
}

伪终端

如果 shunt 本身是在伪终端中运行的,则每个命令都在伪终端中运行。你可以通过命令上的 tty 选项禁用此功能

{
  "commands": {
    "example-command": {
      "argv": "./build.sh",
      "tty": "never"
    }
  }
}

tty 可以是 autoneveralways

环境替换

不支持环境替换,你可以通过调用shell来添加此支持

{
  commands: {
    something: ["bash", "-c", "echo $PATH"],
  },
}

待办事项

  • 正确锁定stdout以消除撕裂的任何可能性。
  • 添加全局选项以使用彩色前缀(这不会阻止子进程的颜色)。
  • argv拆分选项,例如只需提供“echo hello”。
  • (也许)能够发送输入。

依赖项

~5–14MB
~161K SLoC