Skip to content

Commit

Permalink
Improve CI: cargo cranky + pinned wasm-bindgen-cli (#17)
Browse files Browse the repository at this point in the history
* Use cargo cranky

cargo cranky (https://github.com/ericseppanen/cargo-cranky)
is a new tool that passes lints specified in a Cranky.toml
to cargo clippy.

This is a possible solution to
rust-lang/cargo#5034

* Use pinned version of wasm-bindgen-cli

* Add bacon.toml for https://github.com/Canop/bacon
  • Loading branch information
emilk committed Jul 26, 2022
1 parent 5a4dd36 commit 91c1663
Show file tree
Hide file tree
Showing 9 changed files with 178 additions and 121 deletions.
100 changes: 0 additions & 100 deletions .cargo/config.toml

This file was deleted.

12 changes: 6 additions & 6 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ jobs:
command: fmt
args: --all -- --check

clippy:
name: Clippy
cranky:
name: cargo cranky
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
Expand All @@ -103,11 +103,11 @@ jobs:
toolchain: 1.62.0
override: true
- run: sudo apt-get update && sudo apt-get install libgtk-3-dev
- run: rustup component add clippy
- run: cargo install cargo-cranky
- uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features -- -D warnings
command: cranky
args: --workspace --all-targets --all-features -- -D warnings

cargo-deny:
name: cargo deny
Expand Down Expand Up @@ -143,5 +143,5 @@ jobs:
toolchain: 1.62.0
override: true
- run: rustup target add wasm32-unknown-unknown
- run: cargo install wasm-bindgen-cli
- run: ./crates/re_viewer/setup_web.sh
- run: ./crates/re_viewer/wasm_bindgen_check.sh
24 changes: 12 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

106 changes: 106 additions & 0 deletions Cranky.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# https://github.com/ericseppanen/cargo-cranky
# cargo install cargo-cranky && cargo cranky

deny = [
"unsafe_code",
]

warn = [
"clippy::all",
"clippy::await_holding_lock",
"clippy::char_lit_as_u8",
"clippy::checked_conversions",
"clippy::dbg_macro",
"clippy::debug_assert_with_mut_call",
"clippy::disallowed_methods",
"clippy::disallowed_script_idents",
"clippy::doc_markdown",
"clippy::empty_enum",
"clippy::enum_glob_use",
"clippy::equatable_if_let",
"clippy::exit",
"clippy::expl_impl_clone_on_copy",
"clippy::explicit_deref_methods",
"clippy::explicit_into_iter_loop",
"clippy::fallible_impl_from",
"clippy::filter_map_next",
"clippy::flat_map_option",
"clippy::float_cmp_const",
"clippy::fn_params_excessive_bools",
"clippy::fn_to_numeric_cast_any",
"clippy::from_iter_instead_of_collect",
"clippy::if_let_mutex",
"clippy::implicit_clone",
"clippy::imprecise_flops",
"clippy::index_refutable_slice",
"clippy::inefficient_to_string",
"clippy::invalid_upcast_comparisons",
"clippy::iter_not_returning_iterator",
"clippy::large_digit_groups",
"clippy::large_stack_arrays",
"clippy::large_types_passed_by_value",
"clippy::let_unit_value",
"clippy::linkedlist",
"clippy::lossy_float_literal",
"clippy::macro_use_imports",
"clippy::manual_ok_or",
"clippy::map_err_ignore",
"clippy::map_flatten",
"clippy::map_unwrap_or",
"clippy::match_on_vec_items",
"clippy::match_same_arms",
"clippy::match_wild_err_arm",
"clippy::match_wildcard_for_single_variants",
"clippy::mem_forget",
"clippy::mismatched_target_os",
"clippy::missing_enforced_import_renames",
"clippy::missing_safety_doc",
"clippy::mut_mut",
"clippy::mutex_integer",
"clippy::needless_borrow",
"clippy::needless_continue",
"clippy::needless_for_each",
"clippy::needless_pass_by_value",
"clippy::negative_feature_names",
"clippy::nonstandard_macro_braces",
"clippy::option_option",
"clippy::path_buf_push_overwrite",
"clippy::ptr_as_ptr",
"clippy::rc_mutex",
"clippy::ref_option_ref",
"clippy::rest_pat_in_fully_bound_structs",
"clippy::same_functions_in_if_condition",
"clippy::semicolon_if_nothing_returned",
"clippy::single_match_else",
"clippy::str_to_string",
"clippy::string_add_assign",
"clippy::string_add",
"clippy::string_lit_as_bytes",
"clippy::string_to_string",
"clippy::todo",
"clippy::trailing_empty_array",
"clippy::trait_duplication_in_bounds",
"clippy::unimplemented",
"clippy::unnecessary_wraps",
"clippy::unnested_or_patterns",
"clippy::unused_self",
"clippy::useless_transmute",
"clippy::verbose_file_reads",
"clippy::zero_sized_map_values",
"future_incompatible",
"nonstandard_style",
"rust_2018_idioms",
"rustdoc::missing_crate_level_docs",
"semicolon_in_expressions_from_macros",
"trivial_numeric_casts",
"unused_extern_crates",
"unused_import_braces",
# "clippy::cloned_instead_of_copied",
# "clippy::missing_errors_doc",
# "clippy::mod_module_files",
# "trivial_casts",
# "unused_qualifications",
]

allow = [
]
46 changes: 46 additions & 0 deletions bacon.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# This is a configuration file for the bacon tool
# More info at https://github.com/Canop/bacon

default_job = "cranky"

[jobs]

[jobs.cranky]
command = ["cargo", "cranky", "--all-targets", "--all-features", "--color", "always"]
need_stdout = false
watch = ["tests", "benches", "examples"]

[jobs.test]
command = ["cargo", "test", "--color", "always"]
need_stdout = true
watch = ["tests"]

[jobs.doc]
command = ["cargo", "doc", "--color", "always", "--all-features", "--no-deps"]
need_stdout = false

# if the doc compiles, then it opens in your browser and bacon switches
# to the previous job
[jobs.doc-open]
command = ["cargo", "doc", "--color", "always", "--all-features", "--no-deps", "--open"]
need_stdout = false
on_success = "back" # so that we don't open the browser at each change

# You can run your application and have the result displayed in bacon,
# *if* it makes sense for this crate. You can run an example the same
# way. Don't forget the `--color always` part or the errors won't be
# properly parsed.
[jobs.run]
command = ["cargo", "run", "--color", "always"]
need_stdout = true

# You may define here keybindings that would be specific to
# a project, for example a shortcut to launch a specific job.
# Shortcuts to internal functions (scrolling, toggling, etc.)
# should go in your personal prefs.toml file instead.
[keybindings]
i = "job:initial"
c = "job:cranky"
d = "job:doc-open"
t = "job:test"
r = "job:run"
4 changes: 3 additions & 1 deletion check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@
# This scripts runs various CI-like checks in a convenient way.
set -eux

cargo install cargo-cranky # Uses lints defined in Cranky.toml. See https://github.com/ericseppanen/cargo-cranky

RUSTFLAGS="-D warnings"
RUSTDOCFLAGS="-D warnings" # https://github.com/emilk/egui/pull/1454

cargo build --all-features
cargo check --workspace --all-targets --all-features
cargo check -p re_viewer --all-features --lib --target wasm32-unknown-unknown
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features -- -D warnings -W clippy::all
cargo cranky --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets --all-features
cargo test --workspace --doc --all-features

Expand Down
2 changes: 2 additions & 0 deletions crates/re_viewer/build_web.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ set -eu
script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
cd "$script_path/../.."

./crates/re_viewer/setup_web.sh

OPEN=false
FAST=false

Expand Down
3 changes: 1 addition & 2 deletions crates/re_viewer/setup_web.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ cd "$script_path/../.."

# Pre-requisites:
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli
cargo update -p wasm-bindgen
cargo install wasm-bindgen-cli --version 0.2.82

# Required by build_web.sh:
packagesNeeded='binaryen jq'
Expand Down
Loading

0 comments on commit 91c1663

Please sign in to comment.