Fnug is a command runner, well actually it's a terminal multiplexer (like tmux), but with a focus on running all your lint and test commands, at once, and displaying the result of those command. Confused? Watch the demo
- User-friendly terminal interface, with 100% support for both keyboard and mouse navigation
- Git integration, automatically select lints and tests that's should be run, based on what files have uncommitted changes
- Track file changes, and selects commands based on the changed files
- Terminal emulation with scroll back, for those really long error messages
Python 3.10 or later is required.
pipx or rye tool are highly recommended:
# Recommended
pipx install fnug
# (or with rye tool)
rye install fnug
# Via pip (NOT RECOMMENDED)
pip install fnug
To start fnug
you only need to run it in a directory with a .fnug.yaml
configuration file (or with the argument -c path/to/config.yaml
)
Fnug is controlled by a .fnug.yaml
configuration file (or .fnug.json
if thats more your speed).
Runs a single commands
fnug_version: 0.1.0
name: fnug
commands:
- name: hello
cmd: echo world
Uses git auto to select commands based on what files have uncommitted changes (reselect by pressing "g")
fnug_version: 0.1.0
name: fnug
commands:
- name: hello
cmd: echo world
auto:
git: true
path:
- "./"
regex:
- "\\.fnug\\.yaml$"
Uses file watching to monitor the file system for changes, and select commands accordingly, can be combined with git auto
fnug_version: 0.1.0
name: fnug
commands:
- name: hello
cmd: echo world
auto:
watch: true
path:
- "./"
regex:
- "\\.fnug\\.yaml$"
View this projects .fnug.yaml
file for an advanced example
fnug-demo.mp4
Build with Rye
rye sync
log terminal: rye run console
fnug (debug) terminal: rye run debug
Use fnug
of course 😄 (or rye run fnug
)
Made possible by: