# This is a configuration file for the bacon tool
#
# Bacon repository: https://github.com/Canop/bacon
# Complete help on configuration: https://dystroy.org/bacon/config/
# You can also check bacon's own bacon.toml file
#  as an example: https://github.com/Canop/bacon/blob/main/bacon.toml

default_job = "check"

[jobs.check]
command = ["cargo", "check", "--workspace"]
need_stdout = false

[jobs.check-all]
command = ["cargo", "check", "--workspace", "--all-targets", "--all-features"]
need_stdout = false

[jobs.clippy]
command = ["cargo", "clippy", "--workspace", "--all-features", "--all-targets"]
need_stdout = false

[jobs.test]
command = ["cargo", "test", "--workspace"]
need_stdout = true

[jobs.test-unit]
command = ["cargo", "test", "--workspace", "--lib"]
need_stdout = true

[jobs.doc]
command = [
    "cargo",
    "+nightly",
    "doc",
    "-Zunstable-options",
    "-Zrustdoc-scrape-examples",
    "--all-features",
    "--no-deps",
]
need_stdout = false

# If the doc compiles, then it opens in your browser and bacon switches
# to the previous job
[jobs.doc-open]
command = [
    "cargo",
    "+nightly",
    "doc",
    "-Zunstable-options",
    "-Zrustdoc-scrape-examples",
    "--all-features",
    "--no-deps",
    "--open",
]
need_stdout = false
on_success = "job:doc" # so that we don't open the browser at each change

# You can run your application and have the result displayed in bacon,
# *if* it makes sense for this crate. You can run an example the same
# way. Don't forget the `--color always` part or the errors won't be
# properly parsed.
[jobs.run]
command = ["cargo", "run"]
need_stdout = true
allow_warnings = true

[jobs.coverage]
command = ["cargo", "llvm-cov", "--workspace", "--lcov", "--output-path", "target/lcov.info"]

[jobs.format]
command = ["cargo", "+nightly", "fmt", "--", "--check"]
on_success = "back"

[jobs.rdme]
command = ["cargo", "rdme", "--force"]
need_stdout = true
on_success = "back"

[jobs.vhs]
command = ["vhs", "tui-prompts/examples/text.tape"]
need_stdout = true

# You may define here keybindings that would be specific to
# a project, for example a shortcut to launch a specific job.
# Shortcuts to internal functions (scrolling, toggling, etc.)
# should go in your personal global prefs.toml file instead.
[keybindings]
shift-r = "job:rdme"
f = "job:format"
o = "job:coverage"
v = "job:vhs"
u = "job:test-unit"
