# 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", "--all-features", "--color", "always"]
need_stdout = false

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

[jobs.check-crossterm]
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "crossterm"]
need_stdout = false

[jobs.check-termion]
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "termion"]
need_stdout = false

[jobs.check-termwiz]
command = ["cargo", "check", "--color", "always", "--all-targets", "--no-default-features", "--features", "termwiz"]
need_stdout = false

[jobs.clippy]
command = [
    "cargo", "clippy",
    "--all-targets",
    "--color", "always",
]
need_stdout = false

[jobs.test]
command = [
    "cargo", "test",
    "--all-features",
    "--color", "always",
    "--", "--color", "always", # see https://github.com/Canop/bacon/issues/124
]
need_stdout = true

[jobs.test-unit]
command = [
    "cargo", "test",
    "--lib",
    "--all-features",
    "--color", "always",
    "--", "--color", "always", # see https://github.com/Canop/bacon/issues/124
]
need_stdout = true

[jobs.doc]
command = [
    "cargo", "+nightly", "doc",
    "-Zunstable-options", "-Zrustdoc-scrape-examples",
    "--all-features",
    "--color", "always",
    "--no-deps",
]
env.RUSTDOCFLAGS = "--cfg docsrs"
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",
    "--color", "always",
    "--no-deps",
    "--open",
]
env.RUSTDOCFLAGS = "--cfg docsrs"
need_stdout = false
on_success = "job:doc" # so that we don't open the browser at each change

[jobs.coverage]
command = [
    "cargo", "llvm-cov",
    "--lcov", "--output-path", "target/lcov.info",
    "--all-features",
    "--color", "always",
]

[jobs.coverage-unit-tests-only]
command = [
    "cargo", "llvm-cov",
    "--lcov", "--output-path", "target/lcov.info",
    "--lib",
    "--all-features",
    "--color", "always",
]

# 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]
# alt-m = "job:my-job"
ctrl-c = "job:check-crossterm"
ctrl-t = "job:check-termion"
ctrl-w = "job:check-termwiz"
v = "job:coverage"
ctrl-v = "job:coverage-unit-tests-only"
u = "job:test-unit"
n = "job:nextest"
