# configuration for https://github.com/sagiegurari/cargo-make [config] skip_core_tasks = true [env] # all features except the backend ones ALL_FEATURES = "all-widgets,macros,serde" [env.ALL_FEATURES_FLAG] # Windows does not support building termion, so this avoids the build failure by providing two # sets of flags, one for Windows and one for other platforms. source = "${CARGO_MAKE_RUST_TARGET_OS}" default_value = "--features=all-widgets,macros,serde,crossterm,termion,termwiz,underline-color,unstable" mapping = { "windows" = "--features=all-widgets,macros,serde,crossterm,termwiz,underline-color,unstable" } [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", "lint-markdown"] [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", "--no-default-features", "${ALL_FEATURES_FLAG}", "--", "-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", "--no-default-features", "${ALL_FEATURES_FLAG}", ] [tasks.build] description = "Compile the project" command = "cargo" args = [ "build", "--all-targets", "--no-default-features", "${ALL_FEATURES_FLAG}", ] [tasks.clippy] description = "Run Clippy for linting" command = "cargo" args = [ "clippy", "--all-targets", "--tests", "--benches", "--no-default-features", "${ALL_FEATURES_FLAG}", "--", "-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", "--no-default-features", "${ALL_FEATURES_FLAG}", ] [tasks.test-doc] description = "Run documentation tests" command = "cargo" args = ["test", "--doc", "--no-default-features", "${ALL_FEATURES_FLAG}"] [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", "${ALL_FEATURES},${@}", ] [tasks.coverage] description = "Generate code coverage report" command = "cargo" args = [ "llvm-cov", "--lcov", "--output-path", "target/lcov.info", "--no-default-features", "${ALL_FEATURES_FLAG}", ] [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 '''