# canop/bacon

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/canop-bacon).**

3,133 stars · 118 forks · Rust · agpl-3.0

## Links

- GitHub: https://github.com/Canop/bacon
- Homepage: https://dystroy.org/bacon
- awesome-repositories: https://awesome-repositories.com/repository/canop-bacon.md

## Topics

`cargo` `check` `compilation` `rust` `terminal`

## Description

Bacon is a background job runner and text-based user interface test dashboard designed for tracking code health and isolating failing tests. It functions as a developer workflow automator and file system watcher that triggers shell commands and verification tasks automatically when source files are modified.

The tool allows for the definition of custom checkers and keyboard shortcuts to accelerate the iteration and debugging process. It provides a focused display for monitoring project health by tracking compilation errors and restricting active jobs to only those tests that have failed.

The system covers automated code verification, background task monitoring, and custom build workflows. It supports the configuration of project-specific shell commands, file-watch patterns, and personalized key bindings.

## Tags

### DevOps & Infrastructure

- [Background Task Runners](https://awesome-repositories.com/f/devops-infrastructure/automation-orchestration/task-execution-frameworks/task-job-management/background-task-runners.md) — Functions as a background job runner that executes tests and build commands with a real-time result interface.
- [Background Job Processing](https://awesome-repositories.com/f/devops-infrastructure/background-job-processing.md) — Runs configurable tests and compilations as asynchronous background jobs. ([source](https://dystroy.org/bacon))
- [Event-Driven Triggers](https://awesome-repositories.com/f/devops-infrastructure/event-driven-triggers.md) — Automatically initiates verification tasks in response to file system modification events.

### Testing & Quality Assurance

- [Test Execution Filtering](https://awesome-repositories.com/f/testing-quality-assurance/test-execution-filtering.md) — Allows developers to isolate and run only the specific tests that previously failed to accelerate debugging.
- [Code Health Dashboards](https://awesome-repositories.com/f/testing-quality-assurance/code-health-dashboards.md) — Provides a real-time dashboard monitoring warnings, errors, and test failures across source directories. ([source](https://dystroy.org/bacon))
- [Failed Test Rerunning](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-utilities-assertions/test-lifecycle-execution-control/transient-failure-reruns/failed-test-rerunning.md) — Identifies and executes only the specific test cases that failed in previous runs. ([source](https://dystroy.org/bacon))

### Development Tools & Productivity

- [Automated Code Verification](https://awesome-repositories.com/f/development-tools-productivity/automated-code-verification.md) — Provides automatic execution of shell commands and linting tools whenever source files are modified to catch errors immediately.
- [Job State Tracking](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/state-tracking-utilities/action-based-state-tracking/job-state-tracking.md) — Tracks the real-time success or failure of background jobs to provide a focused debugging view.
- [Custom Build Workflows](https://awesome-repositories.com/f/development-tools-productivity/custom-build-workflows.md) — Allows the definition of project-specific job patterns and keyboard shortcuts to streamline compilation and verification.
- [Configuration File Command Execution](https://awesome-repositories.com/f/development-tools-productivity/custom-command-execution/configuration-file-command-execution.md) — Executes background jobs triggered by custom shell commands defined in configuration files.
- [Development Iteration Workflows](https://awesome-repositories.com/f/development-tools-productivity/development-iteration-workflows.md) — Automates the development iteration loop through custom checkers and keyboard shortcuts to accelerate debugging.
- [File Change Listeners](https://awesome-repositories.com/f/development-tools-productivity/file-change-listeners.md) — Listens for filesystem modifications to automatically trigger corresponding verification tasks. ([source](https://cdn.jsdelivr.net/gh/canop/bacon@main/README.md))
- [File System Watchers](https://awesome-repositories.com/f/development-tools-productivity/file-system-watchers.md) — Monitors the file system for changes to automatically trigger defined verification tasks.
- [Custom Job Triggering](https://awesome-repositories.com/f/development-tools-productivity/custom-job-triggering.md) — Allows manual triggering of build commands and test suites via keyboard shortcuts. ([source](https://cdn.jsdelivr.net/gh/canop/bacon@main/README.md))
- [Tool Behavior Configurations](https://awesome-repositories.com/f/development-tools-productivity/tool-behavior-configurations.md) — Provides configuration settings for customizing key bindings and job definitions. ([source](https://dystroy.org/bacon))

### Software Engineering & Architecture

- [Test Result Registries](https://awesome-repositories.com/f/software-engineering-architecture/failure-handling-policies/success-and-failure-wrapping/success-and-failure-partitioning/test-result-registries.md) — Maintains a state registry of job outcomes to facilitate the isolation of failing tests.
- [Asynchronous Process Managers](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-process-managers.md) — Decouples the execution of verification tasks from the main UI thread using asynchronous process management.
- [Background Processing](https://awesome-repositories.com/f/software-engineering-architecture/background-processing.md) — Employs background processing to execute heavy verification tasks without blocking the user interface.
- [Test-Driven Development Workflow](https://awesome-repositories.com/f/software-engineering-architecture/test-driven-development-workflow.md) — Supports the TDD cycle by allowing developers to isolate and run only the tests that are currently failing.

### System Administration & Monitoring

- [File System Monitors](https://awesome-repositories.com/f/system-administration-monitoring/file-system-monitors.md) — Tracks real-time file system changes to trigger automated verification and update the health dashboard.

### User Interface & Experience

- [Configuration-Based Mappings](https://awesome-repositories.com/f/user-interface-experience/component-utilities/keyboard-shortcuts/configuration-based-mappings.md) — Uses external configuration files to map specific file patterns and keys to system shell commands.
- [Test Dashboards](https://awesome-repositories.com/f/user-interface-experience/navigation-systems/tui/test-dashboards.md) — Implements a text-based user interface for tracking code health and isolating failing tests during development.
- [Keyboard Command Mapping](https://awesome-repositories.com/f/user-interface-experience/input-mapping/keyboard-command-mapping.md) — Maps user-defined keyboard shortcuts to the dispatch of specific build or test suites.

### Web Development

- [Developer Health Dashboards](https://awesome-repositories.com/f/web-development/web-automation-scraping/web-scraping-automation/browser-automation/visual-browser-monitoring/test-dashboards/developer-health-dashboards.md) — Provides a focused display for monitoring project health by tracking compilation errors and isolating failing tests.

### Part of an Awesome List

- [Developer Tools](https://awesome-repositories.com/f/awesome-lists/devtools/developer-tools.md) — Background code checker for Rust projects.
