funzzy 1.0.0

Yet another fancy watcher inspired by entr.
Documentation

funzzy Crate version CI integration tests CI Checks

Yet another fancy watcher. (Inspired by antr / entr)

Configure execution of different commands using semantic YAML.

# .watch.yaml
# list here all the events and the commands that it should execute
# TIP: include '.watch.yaml' in your .git/info/exclude to ignore it.

- name: run my tests
  run: make test
  change: "tests/**"
  ignore: "tests/integration/**"

# Command templates for custom scripts
- name: run linters
  run: [
    "npm run lint {{filepath}}",
    "npm test $(echo '{{filepath}}' | sed s/\.tsx//g)"
  ]
  change: ["src/**", "libs/**"]

- name: Starwars
  run: telnet towel.blinkenlights.nl
  change: ".watch.yaml"

- name: say hello
  run: echo "hello on init"
  change: ".watch.yaml"
  run_on_init: true

Motivation

Create a lightweight watcher to run my tests every time something in my project change. So I won't forget to keep my tests passing. Funzzy was made with Rust that is why it consumes almost nothing to run.

Installing

  • OSX:
brew tap cristianoliveira/tap
brew update
brew install funzzy
  • Linux:
curl -s https://raw.githubusercontent.com/cristianoliveira/funzzy/master/linux-install.sh | sh
  • With Cargo
cargo install funzzy

*Make sure you have $HOME/.cargo/bin in your PATH export $PATH:$HOME/.cargo/bin

From source

Make sure you have installed the follow dependencies:

  • Rust

Clone this repo and do:

make install

Running

Initializing with boilerplate:

funzzy init

Change the YAML as you want. Then run:

funzzy

Filtering task by target:

funzzy --target="my task"

Run with some arbitrary command and stdin

find . -R '**.rs' | funzzy 'cargo build'

Templates for composing commands

find . -R '**.rs' | funzzy 'cargo lint {{filepath}}'

See more on examples or in the integration specs

Automated tests

Running unit tests:

cargo test

or simple make tests

Running integration tests:

make integration

Code Style

We use clippy for lintting the funzzy's source code. Make sure you had validated it before commit.

Contributing

  • Fork it!
  • Create your feature branch: git checkout -b my-new-feature
  • Commit your changes: git commit -am 'Add some feature'
  • Push to the branch: git push origin my-new-feature
  • Submit a pull request

Pull Requests are really welcome! Others support also.

Pull Request should have unit tests

License

This project was made under MIT License.