# Shell-hooks Run ``pre`` and ``post`` hooks while executing a command, just like githooks but for all programs. ## Future plans - [x] Block the command based on status of prehook. - [ ] Extract async hooks and run using tokio. - [ ] Run sync hooks parallely but before the command. ## Maybe someday - Implement this as a feature atop pre-existing shells (mayb ion?). ## Getting Started - Install [rust](https://www.rust-lang.org/) - Clone this repo. - Install this tool: ``cargo install --path .``. - Alias any tool in ``~/.bashrc`` by wrapping it with ``shell-hooks``. Like ``alias git = 'shell-hooks git'``. - Now add your pre and post hook definitions in ``~/.local/share/dshell/definitions/``. The file format is toml. The filename does not matter, only content does. ## Writing hooks Currently there are only two useful fields for hook type, the trigger and action. - Trigger: It is any command with space replaced with ``/`` and preceded by ``/cmd/``. So ``git commit`` becomes ``/cmd/git/commit``. - Action: It is any shell command defined as string. - Execution: Execution mode. Sync can run paralley yet completes before the command. Return status can block the execution of program. Async run parallely with actual command, return code does not matter. Default: Async ## Contributing If you have any contribution idea, please create an issue. ## License MIT License ## Copyright - **[Dinesh Bhattarai](https://dbhattarai.info.np)**