#ci #tools #tool

app rust-tools

Rust tools

8 releases (4 stable)

1.0.3 Dec 18, 2022
1.0.2 Jul 22, 2022
1.0.1 May 26, 2022
0.3.1 Dec 28, 2020
0.1.0 Dec 22, 2020

#68 in Configuration

24 downloads per month

Apache-2.0

23KB
615 lines

CI crates.io Documentation License Rustc

A CLI intended to aid development and CI workflows. This project can be seen as a high-level "orchestrator" or "wrapper" for tools that involve the Rust programing language.

Configurations

The application will primarily interact with a configuration (collection of rules) that defines how tools should behave and there are three different sources:

Built-in configuration

Pre-fixed set of rules found within this repository. Feel free to open a PR to create a new configuration.

rust-tools --template you-rust SOME_COMMAND
YouRust(
    Params {
        clippy_flags: [
            "-Dclippy::restriction",
            "-Dwarnings",
            "-Aclippy::implicit_return",
            "-Aclippy::missing_docs_in_private_items",
        ],
        rust_flags: [
            "-Dbad_style",
            "-Dfuture_incompatible",
            "-Dmissing_debug_implementations",
            "-Dmissing_docs",
            "-Dnonstandard_style",
            "-Drust_2018_compatibility",
            "-Drust_2018_idioms",
            "-Dtrivial_casts",
            "-Dunused_lifetimes",
            "-Dunused_qualifications",
            "-Dwarnings",
        ],
        rustfmt_flags: [
            "edition=\"2018",
            "tab_spaces=2",
            "use_field_init_shorthand=true",
            "use_small_heuristics=\"Max",
        ],
        toolchain: "",
    },
)

Configuration file

Can use a built-in configuration as a template for custom needs. Enables the addition or removal of flags.

rust-tools --file SOME_CONFIGURATION_FILE.cfg SOME_COMMAND
add_clipy_flags -Aclippy::type_complexity
rm_clippy_flags -Aclippy::implicit_return,-Aclippy::missing_docs_in_private_items
template you-rust
toolchain nightly-2020-11-11

CLI parameters

Depending on the selected target, it is possible to define or extend certain rules;

rust-tools rust-flags -Dbad_style,-Dunused_qualifications

The final configuration will obey the following order: built-in -> file -> CLI, i.e., built-in parameters are overwritten by file parameters and file parameters are overwritten by cli parameters.

Script example

#!/usr/bin/env bash

set -euxo pipefail

cargo install rust-tools

export RUSTFLAGS="$(rust-tools rust-flags)"

rust-tools clippy

rust-tools check-generic SOME_CRATE
rust-tools test-with-features SOME_CRATE FIRST_FEATURE,SECOND_FEATURE

Supported targets

  • clippy flags
  • rust flags
  • rust-toolchain file
  • rustfmt file and flags

No runtime deps