Hawk

Dead simple rust CLI to ease workflows management inside monorepos.

gif

Usage

Run hawk init to initialize an empty config file. With the --read-from-env flag hawk will try to retrive your workspaces from pnpm-workspace.yaml or pacakge.json workspaces key. ~You can also pass --json if you want to save the config file as json.~

```bash hawk 0.1.4

USAGE: hawk [OPTIONS] [SUBCOMMAND]

OPTIONS: -c, --config Specify the config file path -h, --help Print help information --scope Specify which workspaces files copy / watch Usage: --scope -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

Check out the example folder.

Below an example monorepo situation:

sh 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

bash $ cd example $ hawk --watch ... let the magic happen

Why

Github actions don't yet support workflows inside subfolders, neither in your .github/workflows/ folder or project custom folders. So I made hawk to solve this problem without using custom commands. It lets you copy workflows from custom paths and paste them with a prefix, handling most of the pain. With 10 lines config you have a working monorepo setup.

Installation

Download the latest release and move in your $PATH

From source

make sure to have your rust environment ready, then:

Setup

To setup a new project just run hawk init. If you're in a node environment you can pass the --read-from-env flag to generate config based on the monorepo configuration.

Features