Giter Club home page Giter Club logo

bacon's Introduction

bacon

Latest Version Chat on Miaou

bacon is a background rust code checker.

It's designed for minimal interaction so that you can just let it running, side to your editor, and be notified of warnings and errors in your Rust code.

screenshot

Installation

cargo install bacon

Usage

You launch bacon in a terminal you keep visible.

check the current project

bacon

check another project

bacon --path ../broot

or

bacon ../broot

check all targets (tests, examples, etc)

bacon --job check-all

or

bacon check-all

run clippy instead of cargo check

bacon --job clippy

or

bacon clippy

run tests

bacon test

bacon test

define your own jobs

First create a bacon.toml file by running

bacon --init

This file already contains some standard jobs. Add your own, for example

[jobs.check-win]
command = ["cargo", "check", "--target", "x86_64-pc-windows-gnu", "--color", "always"]

or

[jobs.check-examples]
command = ["cargo", "check", "--examples", "--color", "always"]
watch = ["examples"] # src is implicitly included

Don't forget the --color always part: bacon uses style information to recognize warnings and errors.

and run

bacon check-win

The bacon.toml file may evolve with the features and settings of your project and should be added to source control.

configure clippy lints

You can change the clippy job in the bacon.toml file:

[jobs.clippy]
command = [
	"cargo", "clippy",
	"--color", "always",
	"--",
	"-A", "clippy::match_like_matches_macro",
	"-A", "clippy::collapsible_if",
	"-A", "clippy::module_inception",
]
need_stdout = false

FAQ

What does it exactly do ?

It watches the content of your source directories and launches cargo check or other commands on changes.

Watching and computations are done on background threads to prevent any blocking.

The screen isn't cleaned until the compilation is finished to prevent useful information from being replaced by the lines of an unfinished computation.

Errors are displayed before warnings because you usually want to fix them first.

Rendering is adapted to the dimensions of the terminal to ensure you get a proper usable report. And bacon manages rewrapping on resize.

Can I run several bacon in parallel ?

It's perfectly OK and can be useful to check several compilation targets.

Similarly you don't have to stop bacon when you want to use cargo to build the application.

Bacon is efficient and doesn't work when there's no notification.

What are the supported platforms ?

It works on all decent terminals on Linux, Max OSX and Windows.

Are there settings ?

Yes, they let you enable vim-like key bindings, or always start in summary mode or with lines wrapped.

To create a default preferences file, use bacon --prefs.

Shortcut:

$EDITOR $(bacon --prefs)

Why is bacon sometimes not recomputing when I'm using (neo)vim ?

The default write strategy of vim makes successive savings of the same file not always detectable by inotify.

A solution is to add this to your init.vim file:

set nowritebackup

This doesn't prevent vim from keeping copies during editions, it just changes the behavior of the write operation.

Can I get backtraces in tests ?

To have the backtrace displayed when a test panics, run

RUST_BACKTRACE=1 bacon test

Why "bacon" ?

  • It's a background conpiler.
  • It comes from France and, as you know, France is bacon.

Licences

Bacon is licenced under AGPL-3.0.

The logo is designed by Peter Varo and licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

license

bacon's People

Contributors

canop avatar cgmossa avatar cormacrelf avatar dicej avatar jyn514 avatar petervaro avatar poignardazur avatar safarimonkey avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.