- Notifications
You must be signed in to change notification settings - Fork1
Dead simple rust CLI to ease workflows management inside monorepos.
rawnly/hawk
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Dead simple rust CLI to ease workflows management inside monorepos.
You can installhawk
via cargo (homebrew coming soon) or by downloading thelatest binary
cargo install hawk-cli
Runhawk init
to initialize an empty config file. With the--read-from-env
flaghawk
will try toretrive yourworkspaces
frompnpm-workspace.yaml
orpacakge.json
workspaces key.You can also pass--json
if you want to save the config file as json.
hawk 0.1.4USAGE: hawk [OPTIONS] [SUBCOMMAND]OPTIONS: -c, --config<CONFIG> Specify the config file path -h, --help Printhelp information --scope<SCOPE> Specify which workspaces files copy / watch Usage: --scope<workspace-name> -V, --version Print version informationSUBCOMMANDS: clean Delete generated files copy Copy files to the`target` directoryhelp Print this message or thehelp of the given subcommand(s) init Initialize a repository list List workflowsin the`target` directory
Check out theexample folder.
Below an example monorepo situation:
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 don't yet support workflows inside subfolders, neither in your.github/workflows/
folder or project custom folders.So I madehawk
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 thelatest release and move in your$PATH
make sure to have your rust environment ready, then:
- Clone the repo
- Run
cargo build -r
ormake build
- Copy
target/release/hawk
to your path or usesudo make install
(it will copy the bin into/usr/local/bin
) - Enjoy
To setup a new project just runhawk init
. If you're in anode
environment you can pass the--read-from-env
flag to generate config based on the monorepo configuration.
-uses:rawnly/hawk@mainwith:config:hawk-config.yaml
- File watching
- Cleanup
workflows
folder from generated files. - Custom configuration
- Generate config from
pnpm-workspace.yaml
and yarnspackage.json:workspaces
- Create an action to automate this process. (so the user can update a workflow, push and get the generated one updated automatically)
About
Dead simple rust CLI to ease workflows management inside monorepos.