Skip to content

Commit 9641d2a

Browse files
author
Jorge Aparicio
committed
add git commit/date info to the output of -V
1 parent 8fa2d87 commit 9641d2a

File tree

4 files changed

+59
-7
lines changed

4 files changed

+59
-7
lines changed

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[package]
22
authors = ["Jorge Aparicio <[email protected]>"]
3+
build = "build.rs"
34
name = "svd2rust"
45
version = "0.1.0"
56

build.rs

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
use std::env;
2+
use std::error::Error;
3+
use std::fs::File;
4+
use std::io::Write;
5+
use std::path::PathBuf;
6+
use std::process::Command;
7+
8+
struct IgnoredError {}
9+
10+
impl<E> From<E> for IgnoredError
11+
where E: Error
12+
{
13+
fn from(_: E) -> IgnoredError {
14+
IgnoredError {}
15+
}
16+
}
17+
18+
fn main() {
19+
let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
20+
21+
File::create(out_dir.join("commit-info.txt"))
22+
.unwrap()
23+
.write_all(commit_info().as_bytes())
24+
.unwrap();
25+
}
26+
27+
fn commit_info() -> String {
28+
match (commit_hash(), commit_date()) {
29+
(Ok(hash), Ok(date)) => format!(" ({} {})", hash.trim(), date.trim()),
30+
_ => String::new(),
31+
}
32+
}
33+
34+
fn commit_hash() -> Result<String, IgnoredError> {
35+
Ok(try!(String::from_utf8(try!(Command::new("git")
36+
.args(&["rev-parse", "--short", "HEAD"])
37+
.output())
38+
.stdout)))
39+
}
40+
41+
fn commit_date() -> Result<String, IgnoredError> {
42+
Ok(try!(String::from_utf8(try!(Command::new("git")
43+
.args(&["log", "-1", "--date=short", "--pretty=format:%cd"])
44+
.output())
45+
.stdout)))
46+
}

src/lib.rs

+10-6
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ pub fn gen_peripheral(p: &Peripheral, d: &Defaults) -> Vec<Tokens> {
4040

4141
let field_ty = Ident::new(register.name.to_pascal_case());
4242
let field_name = Ident::new(register.name.to_snake_case());
43-
fields.push(quote! {
43+
fields.push(quote! {
4444
#[doc = #comment]
4545
pub #field_name : #field_ty
4646
});
@@ -114,7 +114,7 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
114114
}
115115
}
116116
});
117-
},
117+
}
118118

119119
Access::ReadWrite => {
120120
items.push(quote! {
@@ -149,7 +149,7 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
149149
}
150150
}
151151
});
152-
},
152+
}
153153

154154
Access::WriteOnly => {
155155
items.push(quote! {
@@ -170,7 +170,7 @@ pub fn gen_register(r: &Register, d: &Defaults) -> Vec<Tokens> {
170170
}
171171
}
172172
});
173-
},
173+
}
174174

175175
_ => unreachable!(),
176176
}
@@ -207,7 +207,9 @@ pub fn gen_register_r(r: &Register, d: &Defaults) -> Vec<Tokens> {
207207
let bits = if width == 1 {
208208
format!("Bit {}", field.bit_range.offset)
209209
} else {
210-
format!("Bits {}:{}", field.bit_range.offset, field.bit_range.offset + width - 1)
210+
format!("Bits {}:{}",
211+
field.bit_range.offset,
212+
field.bit_range.offset + width - 1)
211213
};
212214

213215
let comment = &format!("{} - {}", bits, respace(description))[..];
@@ -289,7 +291,9 @@ pub fn gen_register_w(r: &Register, d: &Defaults) -> Vec<Tokens> {
289291
let bits = if width == 1 {
290292
format!("Bit {}", field.bit_range.offset)
291293
} else {
292-
format!("Bits {}:{}", field.bit_range.offset, field.bit_range.offset + width - 1)
294+
format!("Bits {}:{}",
295+
field.bit_range.offset,
296+
field.bit_range.offset + width - 1)
293297
};
294298

295299
let comment = &format!("{} - {}", bits, respace(description))[..];

src/main.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ fn main() {
2020
.arg(Arg::with_name("peripheral")
2121
.help("Pattern used to select a single peripheral")
2222
.value_name("PATTERN"))
23-
.version(env!("CARGO_PKG_VERSION"))
23+
.version(concat!(env!("CARGO_PKG_VERSION"),
24+
include_str!(concat!(env!("OUT_DIR"), "/commit-info.txt"))))
2425
.get_matches();
2526

2627
let xml = &mut String::new();

0 commit comments

Comments
 (0)