[tasks.build]
command = "cargo"
args = ["build"]
description = "Build the library"
[tasks.clean]
command = "cargo"
args = ["clean"]
description = "Clean generated files"
[tasks.lint]
command = "cargo"
args = ["clippy"]
description = "Run Clippy"
[tasks.example]
command = "cargo"
args = ["run", "--example", "example"]
description = "Run the example"
[tasks.docs]
command = "cargo"
args = ["doc", "--all-features"]
description = "Generate Documentation"
[tasks.doc-test]
command = "cargo"
args = ["test", "--doc"]
description = "Run Doctests"
[tasks.cov]
command = "cargo"
install_crate = "cargo-llvm-cov"
args = [
"llvm-cov",
"nextest",
"--all-features",
"--lcov",
"--output-path",
"lcov.info",
]
description = "Run Tests with Coverage"
[tasks.test]
command = "cargo"
install_crate = "cargo-nextest"
args = ["nextest", "run", "--all-features"]
description = "Run all tests"
[tasks.mutation]
command = "cargo"
install_crate = "cargo-mutants"
args = ["mutants", "--test-tool=nextest", "--", "--all-features"]
description = "Run Mutation Tests"
[tasks.mutation-iterate]
command = "cargo"
install_crate = "cargo-mutants"
args = ["mutants", "--test-tool=nextest", "--iterate", "--", "--all-features"]
description = "Run only failed Mutation Tests"
[tasks.miri-example]
command = "cargo"
args = ["miri", "run", "--example", "example"]
env = { "MIRIFLAGS" = "-Zmiri-backtrace=full -Zmiri-tree-borrows" }
description = "Run Miri on the example executable"
[tasks.miri]
command = "cargo"
args = ["miri", "nextest", "run", "-j", "10"]
env = { "PROPTEST_DISABLE_FAILURE_PERSISTENCE" = "true", "MIRIFLAGS" = "-Zmiri-env-forward=PROPTEST_DISABLE_FAILURE_PERSISTENCE -Zmiri-backtrace=full -Zmiri-tree-borrows" }
description = "Run Miri on all test. WARNING: takes more than 10 hours!"
[tasks.last-changelog]
script_runner = "@duckscript"
description = "Check the version given as command line argument against the latest version in the change log. If they are the same, write the latest changelog entry to 'last_changelog.md'. This is very fragile to whitespaces in the change log!"
script = '''
full_changelog = readfile CHANGELOG.md
handle = split ${full_changelog} "## Version"
last_w = array_get ${handle} 1
last = trim_start ${last_w}
version_arr = split ${last} " "
version_w = array_get ${version_arr} 0
version = trim ${version_w}
args = array ${CARGO_MAKE_TASK_ARGS}
exp_version = array_get ${args} 0
echo Checking versions ${exp_version} ?= ${version}
if semver_is_equal ${version} ${exp_version}
echo Versions OK!
text_arr = array "## Version" ${last}
text = array_join ${text_arr} ""
writefile last_changelog.md ${text}
else
echo Version mismatch, ERROR!
exit 1
end
'''