Declarative feedback loop manager
Go to file
2022-03-08 11:52:49 +01:00
feedback Refactor out the filter code 2022-03-08 11:52:49 +01:00
nix Debouncing and filtering of events 2022-03-05 17:03:53 +01:00
.envrc use nix-shell for faster feedback loop 2022-03-06 12:48:52 +01:00
.gitignore Initial commit 2022-03-05 15:12:28 +01:00
.hlint.yaml Set working dir for a loop 2022-03-06 19:32:46 +01:00
ci.nix Initial commit 2022-03-05 15:12:28 +01:00
default.nix Initial commit 2022-03-05 15:12:28 +01:00
feedback.yaml Read files from stdin as well 2022-03-08 11:14:59 +01:00
README.md Configurable gitignore filter 2022-03-07 17:31:24 +01:00
shell.nix Initial commit 2022-03-05 15:12:28 +01:00
stack.yaml Version in help output 2022-03-06 14:34:27 +01:00

Feedback loop

A general purpose tool to set up good feedback loops and share them with your team.

Features

Run feedback loops

Use the feedback command to set up a feedback loop for your work.

For example, if you are working on a nix build, you might use this feedback loop:

feedback -- nix-build --no-out-link

Declarative feedback loops

You can declare feedback loops in the feedback.yaml configuration file to share them with your team. For example, this gives you a ci.nix-based feedback loop:

loops:
  ci: nix-build ci.nix --no-out-link

Then you can just run this command, and not have to remember the full incantation:

feedback ci

To see the full reference of options of the configuration file, run feedback --help.

CI Integration

When sharing feedback loops with team members, it is important that no one breaks another's workflow. You can use feedback-test to test out the feedback loops in a one-shot manner, so you can check that they still work on CI. See feedback-test --help for more details.

Comparison with other tools

feedback steeloverseer watchexec entr
Indication of command starting ✔️ ✔️ C C
Indication of time ✔️ C C C
Clear screen between feedback ✔️ C C C
Gitignore-aware ✔️ ✖️ ✔️
Named feedback loops ✔️ ✖️
Configurable feedback loops ✔️ ✔️
Cancelling previous runs that aren't done yet ✔️ ✔️ ✔️
Long-form flags for every option ✔️ ✔️ ✔️
CI integration ✔️ C C C
Indication of how long the loop took ✔️ C C C
Shell integration (Commands with pipes "just work") ✔️ ✔️ ✔️ C
Declare Env vars for configured loops ✔️ C C C
Declare working directory for configured loops ✔️ C C C
  • ✔️: Supported
  • C: Possible but you have to write some code yourself
  • 🚧: Under development
  • ✖️: Not supported
  • ?: I don't know.

Someday/maybe ideas

  • I want to have a good idea of the current state of things:
    • Is it blocking on CPU, on memory, on network?
  • Manually activate a run
  • Manually cancel and re-activate a run