#workflow #monorepo #yaml #package-json #management #dead #ease

bin+lib hawk-cli

简化 GitHub 工作流管理的单仓库 CLI 工具

1 个不稳定版本

0.1.4 2023年3月12日

#1717开发工具

MIT 许可证

235KB
739

Hawk

一个简单易用的 Rust CLI 工具,简化单仓库中的工作流管理。

gif

使用方法

运行 hawk init 初始化一个空的配置文件。使用 --read-from-env 标志,hawk 将尝试从 pnpm-workspace.yamlpacakge.json 中的工作区键检索您的 workspaces您也可以传递 --json 来将配置文件保存为 JSON 格式。

hawk 0.1.4

USAGE:
    hawk [OPTIONS] [SUBCOMMAND]

OPTIONS:
    -c, --config <CONFIG>    Specify the config file path
    -h, --help               Print help information
        --scope <SCOPE>      Specify which workspaces files copy / watch Usage: --scope
                             <workspace-name>
    -V, --version            Print version information

SUBCOMMANDS:
    clean    Delete generated files
    copy     Copy files to the `target` directory
    help     Print this message or the help of the given subcommand(s)
    init     Initialize a repository
    list     List workflows in the `target` directory

示例

查看 示例 文件夹。

以下是一个单仓库示例

example
├── hawk-config.yaml
├── .github
   └── workflows
       ├── my-second-app--deploy.yml # name generated by folder
│       └── the-app--deploy.yml # name is read from package.json
└── packages
    ├── my-app
    │   ├── .DS_Store
    │   ├── package.json // reads workspace name from package.json (the-app)
    │   └── .github/workflows
    │       └── deploy.yml
    └── my-second-app
        └── .github/workflows
            └── deploy.yml
    $ cd example
    $ hawk --watch
    ... let the magic happen

原因

GitHub Actions 目前还不支持子文件夹中的工作流,无论是您的 .github/workflows/ 文件夹还是项目自定义文件夹。因此,我创建了 hawk 来解决这个问题,而不需要使用自定义命令。它允许您从自定义路径复制工作流,并带有前缀粘贴,处理大部分的痛点。通过 10 行配置,您就可以拥有一个工作的单仓库设置。

安装

下载最新版本并移动到您的 $PATH

从源代码

请确保您的 Rust 环境已经准备就绪,然后

  • 克隆仓库
  • 运行 cargo build -rmake build
  • target/release/hawk 复制到您的路径或使用 sudo make install (它将 bin 文件复制到 /usr/local/bin
  • 享受

设置

要设置一个新的项目,只需运行 hawk init。如果您处于 node 环境中,可以传递 --read-from-env 标志,根据 monorepo 配置生成配置。

特性

  • 文件监视
  • 清理 workflows 文件夹中的生成文件。
  • 自定义配置
  • pnpm-workspace.yaml 和 yarns 的 package.json:workspaces 生成配置。
  • 创建一个动作来自动化此过程。(这样用户可以更新工作流程,推送并自动获取更新后的生成文件)

依赖

~4–13MB
~137K SLoC