upgrade to syn 2.x
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
parent
3b5607ecdc
commit
ca82b59c6f
11 changed files with 138 additions and 99 deletions
|
@ -1,39 +1,34 @@
|
|||
use std::{fs::read_to_string, path::PathBuf};
|
||||
|
||||
use proc_macro::TokenStream;
|
||||
use proc_macro::{Span, TokenStream};
|
||||
use quote::quote;
|
||||
use syn::{parse_macro_input, AttributeArgs, ItemConst, Lit, NestedMeta};
|
||||
use syn::{Error, ItemConst, Meta};
|
||||
|
||||
pub(super) fn manifest(args: TokenStream, item: TokenStream) -> TokenStream {
|
||||
let item = parse_macro_input!(item as ItemConst);
|
||||
let args = parse_macro_input!(args as AttributeArgs);
|
||||
let member = args.into_iter().find_map(|arg| {
|
||||
let NestedMeta::Lit(arg) = arg else {
|
||||
return None;
|
||||
};
|
||||
let Lit::Str(arg) = arg else {
|
||||
return None;
|
||||
};
|
||||
Some(arg.value())
|
||||
});
|
||||
use crate::{utils, Result};
|
||||
|
||||
let path = manifest_path(member.as_deref());
|
||||
pub(super) fn manifest(item: ItemConst, args: &[Meta]) -> Result<TokenStream> {
|
||||
let member = utils::get_named_string(args, "crate");
|
||||
let path = manifest_path(member.as_deref())?;
|
||||
let manifest = read_to_string(&path).unwrap_or_default();
|
||||
|
||||
let name = item.ident;
|
||||
let val = manifest.as_str();
|
||||
let name = item.ident;
|
||||
let ret = quote! {
|
||||
const #name: &'static str = #val;
|
||||
};
|
||||
|
||||
ret.into()
|
||||
Ok(ret.into())
|
||||
}
|
||||
|
||||
#[allow(clippy::option_env_unwrap)]
|
||||
fn manifest_path(member: Option<&str>) -> PathBuf {
|
||||
let mut path: PathBuf = option_env!("CARGO_MANIFEST_DIR")
|
||||
.expect("missing CARGO_MANIFEST_DIR in environment")
|
||||
.into();
|
||||
fn manifest_path(member: Option<&str>) -> Result<PathBuf> {
|
||||
let Some(path) = option_env!("CARGO_MANIFEST_DIR") else {
|
||||
return Err(Error::new(
|
||||
Span::call_site().into(),
|
||||
"missing CARGO_MANIFEST_DIR in environment",
|
||||
));
|
||||
};
|
||||
|
||||
let mut path: PathBuf = path.into();
|
||||
|
||||
// conduwuit/src/macros/ -> conduwuit/src/
|
||||
path.pop();
|
||||
|
@ -47,5 +42,6 @@ fn manifest_path(member: Option<&str>) -> PathBuf {
|
|||
}
|
||||
|
||||
path.push("Cargo.toml");
|
||||
path
|
||||
|
||||
Ok(path)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue