# configuration for https://github.com/sagiegurari/cargo-make [config] skip_core_tasks = true [env] # all features except the backend ones NON_BACKEND_FEATURES = "all-widgets,macros,serde" # allow to run tasks from the workspace root CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true [tasks.default] alias = "ci" [tasks.ci] description = "Run continuous integration tasks" dependencies = ["lint", "clippy", "check", "test"] [tasks.lint] description = "Lint code style (formatting, typos, docs, markdown)" dependencies = ["lint-format", "lint-typos", "lint-docs"] [tasks.lint-format] description = "Lint code formatting" toolchain = "nightly" command = "cargo" args = ["fmt", "--all", "--check"] [tasks.format] description = "Fix code formatting" toolchain = "nightly" command = "cargo" args = ["fmt", "--all"] [tasks.lint-typos] description = "Run typo checks" install_crate = { crate_name = "typos-cli", binary = "typos", test_arg = "--version" } command = "typos" [tasks.lint-docs] description = "Check documentation for errors and warnings" toolchain = "nightly" command = "cargo" args = [ "rustdoc", "-p", "ratatui", "--all-features", "--", "-Zunstable-options", "--check", "-Dwarnings", ] [tasks.lint-markdown] description = "Check markdown files for errors and warnings" command = "markdownlint-cli2" args = ["**/*.md", "!target"] [tasks.check] description = "Check code for errors and warnings" command = "cargo" args = ["check", "--all-targets", "--all-features"] [tasks.build] description = "Compile the project" command = "cargo" args = ["build", "--all-targets", "--all-features"] [tasks.clippy] description = "Run Clippy for linting" command = "cargo" args = [ "clippy", "--all-targets", "--all-features", "--tests", "--benches", "--", "-D", "warnings", ] [tasks.install-nextest] description = "Install cargo-nextest" install_crate = { crate_name = "cargo-nextest", binary = "cargo-nextest", test_arg = "--help" } [tasks.test] description = "Run tests" run_task = { name = ["test-lib", "test-doc"] } [tasks.test-lib] description = "Run default tests" dependencies = ["install-nextest"] command = "cargo" args = ["nextest", "run", "--all-targets", "--all-features"] [tasks.test-doc] description = "Run documentation tests" command = "cargo" args = ["test", "--doc", "--all-features"] [tasks.test-backend] # takes a command line parameter to specify the backend to test (e.g. "crossterm") description = "Run backend-specific tests" dependencies = ["install-nextest"] command = "cargo" args = [ "nextest", "run", "--all-targets", "--no-default-features", "--features", "${NON_BACKEND_FEATURES},${@}", ] [tasks.coverage] description = "Generate code coverage report" command = "cargo" args = [ "llvm-cov", "--workspace", "--lcov", "--output-path", "../target/lcov.info", "--all-features", ] [tasks.run-example] private = true condition = { env_set = ["TUI_EXAMPLE_NAME"] } command = "cargo" args = [ "run", "--release", "--example", "${TUI_EXAMPLE_NAME}", "--features", "all-widgets", ] [tasks.build-examples] description = "Compile project examples" command = "cargo" args = ["build", "--examples", "--release", "--features", "all-widgets"] [tasks.run-examples] description = "Run project examples" dependencies = ["build-examples"] script = ''' #!@duckscript files = glob_array ./examples/*.rs for file in ${files} name = basename ${file} name = substring ${name} -3 set_env TUI_EXAMPLE_NAME ${name} cm_run_task run-example end '''