From 3ae6bf1d6f24407de400024dcb5924d841a2e1ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Orhun=20Parmaks=C4=B1z?= Date: Sat, 23 Nov 2024 21:53:40 +0300 Subject: [PATCH] docs(contributing): use cargo-xtask for intructions (#1509) - Updates `CONTRIBUTING.md` about the usage of `xtask` - Removes `Makefile.toml` --- CONTRIBUTING.md | 14 ++--- Makefile.toml | 159 ------------------------------------------------ 2 files changed, 7 insertions(+), 166 deletions(-) delete mode 100644 Makefile.toml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8bdc399..c1f6cf6d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,7 @@ guarantee that the behavior is unchanged. ### Code formatting -Run `cargo make format` before committing to ensure that code is consistently formatted with +Run `cargo xtask format` before committing to ensure that code is consistently formatted with rustfmt. Configuration is in [`rustfmt.toml`](./rustfmt.toml). ### Search `tui-rs` for similar work @@ -56,7 +56,7 @@ documented. ### Run CI tests before pushing a PR -Running `cargo make ci` before pushing will perform the same checks that we do in the CI process. +Running `cargo xtask ci` before pushing will perform the same checks that we do in the CI process. It's not mandatory to do this before pushing, however it may save you time to do so instead of waiting for GitHub to run the checks. @@ -71,17 +71,17 @@ in GitHub docs. ### Setup -Clone the repo and build it using [cargo-make](https://sagiegurari.github.io/cargo-make/) +TL;DR: Clone the repo and build it using `cargo xtask`. Ratatui is an ordinary Rust project where common tasks are managed with -[cargo-make](https://github.com/sagiegurari/cargo-make/). It wraps common `cargo` commands with sane +[cargo-xtask](https://github.com/matklad/cargo-xtask). It wraps common `cargo` commands with sane defaults depending on your platform of choice. Building the project should be as easy as running -`cargo make build`. +`cargo xtask build`. ```shell git clone https://github.com/ratatui/ratatui.git cd ratatui -cargo make build +cargo xtask build ``` ### Tests @@ -182,7 +182,7 @@ We use GitHub Actions for the CI where we perform the following checks: - The code should conform to the default format enforced by `rustfmt`. - The code should not contain common style issues `clippy`. -You can also check most of those things yourself locally using `cargo make ci` which will offer you +You can also check most of those things yourself locally using `cargo xtask ci` which will offer you a shorter feedback loop than pushing to github. ## Relationship with `tui-rs` diff --git a/Makefile.toml b/Makefile.toml deleted file mode 100644 index 7caf1594..00000000 --- a/Makefile.toml +++ /dev/null @@ -1,159 +0,0 @@ -# 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 -'''