docs(contributing): use cargo-xtask for intructions (#1509)

- Updates `CONTRIBUTING.md` about the usage of `xtask`
- Removes `Makefile.toml`
This commit is contained in:
Orhun Parmaksız 2024-11-23 21:53:40 +03:00 committed by GitHub
parent ec30390446
commit 3ae6bf1d6f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 166 deletions

View file

@ -31,7 +31,7 @@ guarantee that the behavior is unchanged.
### Code formatting ### 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). rustfmt. Configuration is in [`rustfmt.toml`](./rustfmt.toml).
### Search `tui-rs` for similar work ### Search `tui-rs` for similar work
@ -56,7 +56,7 @@ documented.
### Run CI tests before pushing a PR ### 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 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. waiting for GitHub to run the checks.
@ -71,17 +71,17 @@ in GitHub docs.
### Setup ### 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 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 defaults depending on your platform of choice. Building the project should be as easy as running
`cargo make build`. `cargo xtask build`.
```shell ```shell
git clone https://github.com/ratatui/ratatui.git git clone https://github.com/ratatui/ratatui.git
cd ratatui cd ratatui
cargo make build cargo xtask build
``` ```
### Tests ### 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 conform to the default format enforced by `rustfmt`.
- The code should not contain common style issues `clippy`. - 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. a shorter feedback loop than pushing to github.
## Relationship with `tui-rs` ## Relationship with `tui-rs`

View file

@ -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
'''