Skip to content

Commit 8e2d1b9

Browse files
committed
serde-default, option output_dir
1 parent 93eb06b commit 8e2d1b9

File tree

3 files changed

+13
-58
lines changed

3 files changed

+13
-58
lines changed

src/config.rs

Lines changed: 3 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,84 +2,32 @@ use anyhow::{bail, Result};
22
use std::path::{Path, PathBuf};
33

44
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
5-
#[derive(Clone, PartialEq, Eq, Debug)]
5+
#[derive(Clone, PartialEq, Eq, Debug, Default)]
6+
#[cfg_attr(feature = "serde", serde(default))]
67
pub struct Config {
7-
#[cfg_attr(feature = "serde", serde(default))]
88
pub target: Target,
9-
#[cfg_attr(feature = "serde", serde(default))]
109
pub atomics: bool,
11-
#[cfg_attr(feature = "serde", serde(default))]
1210
pub atomics_feature: Option<String>,
13-
#[cfg_attr(feature = "serde", serde(default))]
1411
pub generic_mod: bool,
15-
#[cfg_attr(feature = "serde", serde(default))]
1612
pub make_mod: bool,
17-
#[cfg_attr(feature = "serde", serde(default))]
1813
pub ignore_groups: bool,
19-
#[cfg_attr(feature = "serde", serde(default))]
2014
pub keep_list: bool,
21-
#[cfg_attr(feature = "serde", serde(default))]
2215
pub strict: bool,
23-
#[cfg_attr(feature = "serde", serde(default))]
2416
pub pascal_enum_values: bool,
25-
#[cfg_attr(feature = "serde", serde(default))]
2617
pub feature_group: bool,
27-
#[cfg_attr(feature = "serde", serde(default))]
2818
pub feature_peripheral: bool,
29-
#[cfg_attr(feature = "serde", serde(default))]
3019
pub max_cluster_size: bool,
31-
#[cfg_attr(feature = "serde", serde(default))]
3220
pub impl_debug: bool,
33-
#[cfg_attr(feature = "serde", serde(default))]
3421
pub impl_debug_feature: Option<String>,
35-
#[cfg_attr(feature = "serde", serde(default = "current_dir"))]
36-
pub output_dir: PathBuf,
37-
#[cfg_attr(feature = "serde", serde(default))]
22+
pub output_dir: Option<PathBuf>,
3823
pub input: Option<PathBuf>,
39-
#[cfg_attr(feature = "serde", serde(default))]
4024
pub source_type: SourceType,
41-
#[cfg_attr(feature = "serde", serde(default))]
4225
pub log_level: Option<String>,
43-
#[cfg_attr(feature = "serde", serde(default))]
4426
pub interrupt_link_section: Option<String>,
45-
#[cfg_attr(feature = "serde", serde(default))]
4627
pub reexport_core_peripherals: bool,
47-
#[cfg_attr(feature = "serde", serde(default))]
4828
pub reexport_interrupt: bool,
4929
}
5030

51-
fn current_dir() -> PathBuf {
52-
PathBuf::from(".")
53-
}
54-
55-
impl Default for Config {
56-
fn default() -> Self {
57-
Self {
58-
target: Target::default(),
59-
atomics: false,
60-
atomics_feature: None,
61-
generic_mod: false,
62-
make_mod: false,
63-
ignore_groups: false,
64-
keep_list: false,
65-
strict: false,
66-
pascal_enum_values: false,
67-
feature_group: false,
68-
feature_peripheral: false,
69-
max_cluster_size: false,
70-
impl_debug: false,
71-
impl_debug_feature: None,
72-
output_dir: current_dir(),
73-
input: None,
74-
source_type: SourceType::default(),
75-
log_level: None,
76-
interrupt_link_section: None,
77-
reexport_core_peripherals: false,
78-
reexport_interrupt: false,
79-
}
80-
}
81-
}
82-
8331
#[allow(clippy::upper_case_acronyms)]
8432
#[allow(non_camel_case_types)]
8533
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]

src/generate/device.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use log::debug;
66
use std::borrow::Cow;
77
use std::fs::File;
88
use std::io::Write;
9+
use std::path::Path;
910

1011
use crate::config::{Config, Target};
1112
use crate::util::{self, ToSanitizedCase};
@@ -139,7 +140,13 @@ pub fn render(d: &Device, config: &Config, device_x: &mut String) -> Result<Toke
139140
let generic_file = include_str!("generic.rs");
140141
let generic_atomic_file = include_str!("generic_atomic.rs");
141142
if config.generic_mod {
142-
let mut file = File::create(config.output_dir.join("generic.rs"))?;
143+
let mut file = File::create(
144+
config
145+
.output_dir
146+
.as_deref()
147+
.unwrap_or(Path::new("."))
148+
.join("generic.rs"),
149+
)?;
143150
writeln!(file, "{generic_file}")?;
144151
if config.atomics {
145152
if let Some(atomics_feature) = config.atomics_feature.as_ref() {

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
use log::{debug, error, info};
44

5-
use std::fs::File;
65
use std::io::Write;
76
use std::process;
7+
use std::{fs::File, path::Path};
88

99
use anyhow::{Context, Result};
1010
use clap::{Arg, ArgAction, Command};
@@ -217,7 +217,7 @@ fn run() -> Result<()> {
217217
if let Some(file) = config.input.as_ref() {
218218
config.source_type = SourceType::from_path(file)
219219
}
220-
let path = &config.output_dir;
220+
let path = config.output_dir.as_deref().unwrap_or(Path::new("."));
221221

222222
info!("Parsing device from SVD file");
223223
let device = load_from(input, &config)?;

0 commit comments

Comments
 (0)