aboutsummaryrefslogtreecommitdiff
path: root/crates/proc_macro_api/src/version.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/proc_macro_api/src/version.rs')
-rw-r--r--crates/proc_macro_api/src/version.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/crates/proc_macro_api/src/version.rs b/crates/proc_macro_api/src/version.rs
index 11a7fb59a..dcf8fae8f 100644
--- a/crates/proc_macro_api/src/version.rs
+++ b/crates/proc_macro_api/src/version.rs
@@ -11,14 +11,15 @@ use object::read::{File as BinaryFile, Object, ObjectSection};
11use snap::read::FrameDecoder as SnapDecoder; 11use snap::read::FrameDecoder as SnapDecoder;
12 12
13#[derive(Debug)] 13#[derive(Debug)]
14pub(crate) struct RustCInfo { 14pub struct RustCInfo {
15 pub(crate) version: (usize, usize, usize), 15 pub version: (usize, usize, usize),
16 pub(crate) channel: String, 16 pub channel: String,
17 pub(crate) commit: String, 17 pub commit: String,
18 pub(crate) date: String, 18 pub date: String,
19} 19}
20 20
21pub(crate) fn read_info(dylib_path: &Path) -> io::Result<RustCInfo> { 21/// Read rustc dylib information
22pub fn read_dylib_info(dylib_path: &Path) -> io::Result<RustCInfo> {
22 macro_rules! err { 23 macro_rules! err {
23 ($e:literal) => { 24 ($e:literal) => {
24 io::Error::new(io::ErrorKind::InvalidData, $e) 25 io::Error::new(io::ErrorKind::InvalidData, $e)
@@ -33,7 +34,7 @@ pub(crate) fn read_info(dylib_path: &Path) -> io::Result<RustCInfo> {
33 } 34 }
34 35
35 let version_part = items.next().ok_or(err!("no version string"))?; 36 let version_part = items.next().ok_or(err!("no version string"))?;
36 let mut version_parts = version_part.split("-"); 37 let mut version_parts = version_part.split('-');
37 let version = version_parts.next().ok_or(err!("no version"))?; 38 let version = version_parts.next().ok_or(err!("no version"))?;
38 let channel = version_parts.next().unwrap_or_default().to_string(); 39 let channel = version_parts.next().unwrap_or_default().to_string();
39 40
@@ -51,7 +52,7 @@ pub(crate) fn read_info(dylib_path: &Path) -> io::Result<RustCInfo> {
51 let date = date[0..date.len() - 2].to_string(); 52 let date = date[0..date.len() - 2].to_string();
52 53
53 let version_numbers = version 54 let version_numbers = version
54 .split(".") 55 .split('.')
55 .map(|it| it.parse::<usize>()) 56 .map(|it| it.parse::<usize>())
56 .collect::<Result<Vec<_>, _>>() 57 .collect::<Result<Vec<_>, _>>()
57 .map_err(|_| err!("version number error"))?; 58 .map_err(|_| err!("version number error"))?;