Skip to content

Put codegen output into OUT_DIR rather than src/ #76

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,21 @@ fn main() {
//.check_ranges(FeatureConfig::Never) // or look below for an example.
.build();

let mut out = std::io::BufWriter::new(std::fs::File::create("src/messages.rs").unwrap());
let out_dir = std::env::var("OUT_DIR").unwrap();
let dest_path = std::path::Path::new(&out_dir).join("messages.rs");
let mut out = std::io::BufWriter::new(std::fs::File::create(&dest_path).unwrap());
dbc_codegen::codegen(config, &mut out).expect("dbc-codegen failed");
}
```

and including the following snippet in your `main.rs` or `lib.rs`:

```rust
pub mod messages {
include!(concat!(env!("OUT_DIR"), "/messages.rs"));
}
```

## Using generated Rust code

dbc-codegen generates a Rust file that is expected to be in a cargo project.
Expand Down
1 change: 1 addition & 0 deletions dbc-codegen-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ fn main() {
.dbc_name(&dbc_file_name)
.dbc_content(&dbc_file)
.debug_prints(true)
.clippy_attributes(true)
.build();

dbc_codegen::codegen(config, &mut messages_code).unwrap_or_else(|e| {
Expand Down
58 changes: 33 additions & 25 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@ pub struct Config<'a> {
/// Optional: Allow dead code in the generated module. Default: `false`.
#[builder(default)]
pub allow_dead_code: bool,

/// Optional: Include clippy lint attributes in generated output. Default: `false`.
#[builder(default)]
pub clippy_attributes: bool,
}

/// Configuration for including features in the codegenerator.
Expand Down Expand Up @@ -114,32 +118,36 @@ pub fn codegen(config: Config<'_>, out: impl Write) -> Result<()> {
let mut w = BufWriter::new(out);

writeln!(&mut w, "// Generated code!")?;
writeln!(
&mut w,
"#![allow(unused_comparisons, unreachable_patterns, unused_imports)]"
)?;
if config.allow_dead_code {
writeln!(&mut w, "#![allow(dead_code)]")?;

if config.clippy_attributes {
writeln!(
&mut w,
"#![allow(unused_comparisons, unreachable_patterns, unused_imports)]"
)?;
if config.allow_dead_code {
writeln!(&mut w, "#![allow(dead_code)]")?;
}
writeln!(&mut w, "#![allow(clippy::let_and_return, clippy::eq_op)]")?;
writeln!(
&mut w,
"#![allow(clippy::useless_conversion, clippy::unnecessary_cast)]"
)?;
writeln!(
&mut w,
"#![allow(clippy::excessive_precision, clippy::manual_range_contains, clippy::absurd_extreme_comparisons, clippy::too_many_arguments)]"
)?;
writeln!(&mut w, "#![deny(clippy::arithmetic_side_effects)]")?;
writeln!(&mut w)?;
writeln!(
&mut w,
"//! Message definitions from file `{:?}`",
config.dbc_name
)?;
writeln!(&mut w, "//!")?;
writeln!(&mut w, "//! - Version: `{:?}`", dbc.version())?;
writeln!(&mut w)?;
}
writeln!(&mut w, "#![allow(clippy::let_and_return, clippy::eq_op)]")?;
writeln!(
&mut w,
"#![allow(clippy::useless_conversion, clippy::unnecessary_cast)]"
)?;
writeln!(
&mut w,
"#![allow(clippy::excessive_precision, clippy::manual_range_contains, clippy::absurd_extreme_comparisons, clippy::too_many_arguments)]"
)?;
writeln!(&mut w, "#![deny(clippy::arithmetic_side_effects)]")?;
writeln!(&mut w)?;
writeln!(
&mut w,
"//! Message definitions from file `{:?}`",
config.dbc_name
)?;
writeln!(&mut w, "//!")?;
writeln!(&mut w, "//! - Version: `{:?}`", dbc.version())?;
writeln!(&mut w)?;

writeln!(&mut w, "use core::ops::BitOr;")?;
writeln!(&mut w, "use bitvec::prelude::*;")?;

Expand Down
15 changes: 0 additions & 15 deletions testing/can-messages/src/messages.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,4 @@
// Generated code!
#![allow(unused_comparisons, unreachable_patterns, unused_imports)]
#![allow(clippy::let_and_return, clippy::eq_op)]
#![allow(clippy::useless_conversion, clippy::unnecessary_cast)]
#![allow(
clippy::excessive_precision,
clippy::manual_range_contains,
clippy::absurd_extreme_comparisons,
clippy::too_many_arguments
)]
#![deny(clippy::arithmetic_side_effects)]

//! Message definitions from file `"example.dbc"`
//!
//! - Version: `Version("43")`

#[cfg(feature = "arb")]
use arbitrary::{Arbitrary, Unstructured};
use bitvec::prelude::*;
Expand Down