mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 21:01:02 +00:00
introduce expander (#4974)
* introduce expander * unify towards expand * bubble up expand * spelling Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com> * add newlines Co-authored-by: Andrei Sandu <54316454+sandreim@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
8aff3cb81b
commit
d4176874a1
@@ -98,36 +98,13 @@ pub(crate) fn impl_overseer_gen(
|
||||
additive.extend(impl_message_wrapper_enum(&info)?);
|
||||
additive.extend(impl_dispatch(&info));
|
||||
|
||||
// Write to a file for expansion, and then use it via `include!()`
|
||||
// in order to obtain better compiler errors when modifying `overlord`.
|
||||
if cfg!(feature = "expansion") {
|
||||
use std::io::Write;
|
||||
let ts = expander::Expander::new("overlord-expansion")
|
||||
.add_comment("Generated overseer code by `#[overlord(..)]`".to_owned())
|
||||
.dry(!cfg!(feature = "expand"))
|
||||
.verbose(false)
|
||||
.fmt(expander::Edition::_2018)
|
||||
.write_to_out_dir(additive)
|
||||
.expect("Expander does not fail due to IO in OUT_DIR. qed");
|
||||
|
||||
let out = env!("OUT_DIR");
|
||||
let out = std::path::PathBuf::from(out);
|
||||
let path = out.join("overlord-expansion.rs");
|
||||
let mut f = std::fs::OpenOptions::new()
|
||||
.write(true)
|
||||
.create(true)
|
||||
.truncate(true)
|
||||
.open(&path)
|
||||
.expect("File exists. qed");
|
||||
f.write_all(
|
||||
&mut format!("// {:?} \n{}", std::time::SystemTime::now(), additive).as_bytes(),
|
||||
)
|
||||
.expect("Got permissions to write to file. qed");
|
||||
std::process::Command::new("rustfmt")
|
||||
.arg("--edition=2018")
|
||||
.arg(&path)
|
||||
.current_dir(out)
|
||||
.spawn()
|
||||
.expect("Running rustfmt works. qed");
|
||||
|
||||
let path = path.display().to_string();
|
||||
Ok(quote! {
|
||||
include!( #path );
|
||||
})
|
||||
} else {
|
||||
Ok(additive)
|
||||
}
|
||||
Ok(ts)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user