Awesome
<div align="center"> <img src="https://raw.githubusercontent.com/kyu08/fzf-make/main/static/logo.png" />fzf-make
is a command line tool that executes commands using fuzzy finder with preview window. Currently supporting make, pnpm, yarn.
🛠️ Features
- Select and execute a make target or (pnpm | yarn) scripts using fuzzy-finder with a preview window by running
fzf-make
! - Execute the last executed command(By running
fzf-make --repeat
.) - Command history
- Support make, pnpm, yarn. Scheduled to be developed: npm.
- [make] Support
include
directive - [pnpm] Support workspace(collect scripts all of
package.json
in the directory where fzf-make is launched.) - [yarn] Support workspace(collect all scripts which is defined in
workspaces
field in rootpackage.json
.) - (Scheduled to be developed) Support config file
📦 Installation
macOS
Homebrew
# install
brew install fzf-make
# update
brew upgrade fzf-make
Arch Linux
fzf-make
can be installed from the AUR using an AUR helper. For example:
paru -S fzf-make
NixOS / Nix (package manager)
fzf-make
can be run from the repository (latest version)
nix run github:kyu08/fzf-make
Or from the nixpkgs (channel >= 23.05)
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
cargo install --locked fzf-make
💡 Usage
Run target using fuzzy finder
- Execute
fzf-make
in the directory you want to run make target, or (pnpm | yarn) scripts. - Select command you want to execute. If you type some characters, the list will be filtered. <img width="752" alt="demo" src="https://raw.githubusercontent.com/kyu08/fzf-make/main/static/usage-main.png"> <img width="752" alt="demo" src="https://raw.githubusercontent.com/kyu08/fzf-make/main/static/usage-type-characters.png">
Run target from history
- Execute
fzf-make
in the directory you want to run make target, or (pnpm | yarn) scripts. - Press
Tab
to move to the history pane. - Select command you want to execute. <img width="752" alt="demo" src="https://raw.githubusercontent.com/kyu08/fzf-make/main/static/usage-history.png">
How fzf-make judges which command runner can be used
make
Whether makefile(file name should be one of GNUmakefile
, makefile
, Makefile
) is in the current directory.
pnpm
Whether package.json
and pnpm-lock.yaml
are in the current directory.
yarn
Whether package.json
and yarn.lock
are in the current directory.
Commands Supported
Command | Description |
---|---|
fzf-make | Launch fzf-make |
fzf-make --repeat / fzf-make -r / fzf-make repeat | Execute last executed target |
fzf-make --history / fzf-make -h / fzf-make history | Launch fzf-make with the history pane focused |
fzf-make --help / fzf-make help | Show help |
fzf-make --version / fzf-make -v / fzf-make version | Show version |
Example Aliases
To simplify the usage of fzf-make
, you can define aliases in your shell configuration. Below is an example configuration that works for most shells (bash, zsh, fish, etc.):
alias fm='fzf-make'
alias fr='fzf-make repeat'
alias fh='fzf-make history'
💻 Development
- Clone this repository
- Change the codes
- Run
make run
To execute test, run make test
(needs nextest
).
nix
Or you can use nix
to create a development shell with the project dependencies.
Within the repo root, execute the following command:
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)
- fzf-make - A command runner with fuzzy finder and preview window for make, pnpm - reddit
- Show HN: fzf-make – a command runner with a fuzzy finder for make, pnpm and yarn - Hacker News
- (Japanese)[make,pnpm,yarnに対応]タスクランナーのコマンドをfuzzy finder形式で選択できるCLIツール fzf-makeの紹介
- (Japanese)Makefileに定義されたtargetをfzfで選択して実行するCLIツールをRustでつくった