<div align="center">
<img src="./static/fzf-make-logo.png" />
`fzf-make` is the command line tool that execute make target using fzf.

[](https://github.com/kyu08/fzf-make/releases/latest)

</div>
# 🛠️ Features
- Select and execute a make target using fzf
- Support `include` directive
- **(Scheduled to be developed)** Support config file
- **(Scheduled to be developed)** Command history
# 👓 Prerequisites
- [bat](https://github.com/sharkdp/bat) (In the future, we intend to make it work with `cat` as well, but currently it only works with `bat`.)
# 📦 Installation
## macOS
### Homebrew
You don't need to install `bat` because `fzf-make` will install it automatically via Homebrew.
```sh
# install
brew tap kyu08/tap
brew install kyu08/tap/fzf-make
```
```sh
# update
brew update
brew upgrade fzf-make
```
## Arch Linux
`fzf-make` can be installed from the [AUR](https://aur.archlinux.org/packages/fzf-make) using an [AUR helper](https://wiki.archlinux.org/title/AUR_helpers). For example:
```sh
paru -S fzf-make
```
## NixOS / Nix (package manager)
`fzf-make` can be run from the repository (latest version)
```sh
nix run github:kyu08/fzf-make
```
Or from the nixpkgs (channel >= 23.05)
```sh
nix run nixpkgs#fzf-make
```
> **Note**
> You may need to enable experimental feature. In that case, execute the following command to enable them
> `echo "experimental-features = nix-command flakes" | tee ~/.config/nix/nix.conf`
## OS-independent method
### Cargo
```sh
cargo install --git https://github.com/kyu08/fzf-make
```
# 💡 Usage
1. Execute `fzf-make` in the directory include makefile(file name should be one of `GNUmakefile`, `makefile`, `Makefile`)
1. Select make command you want to execute
# 💻 Development
1. Clone this repository
1. Change the codes
1. Run `make run`
To execute test, run `make test`(needs `nextest`). Or just run `cargo test`.
## nix
Or you can use `nix` to create a developement shell with the project dependencies.
Within the repo root, execute the following command:
```nix
nix develop
```
# 👥 Contribution
- Contributions are welcome!
- If you have a Feature request, please create an issue first.
- If you have added fzf-make to some package manager, please let me know. (or please send a PR to add how to install via the package manager in the `README.md`)
- If you have any questions, feel free to create an issue and ask.
# 🗒 Related Article(s)
- (Japanese)[Makefileに定義されたtargetをfzfで選択して実行するCLIツールをRustでつくった](https://blog.kyu08.com/posts/fzf-make)