Dead simple rust CLI to ease workflows management inside monorepos.
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
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
```
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
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.
Download the latest release and move in your $PATH
make sure to have your rust environment ready, then:
cargo build -r
or make build
target/release/hawk
to your path or use sudo make install
(it will copy the bin into /usr/local/bin
)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.
workflows
folder from generated files.pnpm-workspace.yaml
and yarns package.json:workspaces