mirror of
https://git.proxmox.com/git/perlmod
synced 2025-10-04 13:01:42 +00:00
perlmod-macro: drop anyhow dependency
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
parent
d253472380
commit
f888c202cc
@ -17,7 +17,6 @@ maintenance = { status = "experimental" }
|
||||
proc-macro = true
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0"
|
||||
proc-macro2 = "1.0"
|
||||
quote = "1.0"
|
||||
syn = { version = "1.0", features = [ "full" ] }
|
||||
|
@ -2,6 +2,7 @@ use std::convert::TryFrom;
|
||||
|
||||
use proc_macro2::{Ident, Span};
|
||||
|
||||
use syn::Error;
|
||||
use syn::AttributeArgs;
|
||||
|
||||
pub struct ModuleAttrs {
|
||||
@ -11,7 +12,7 @@ pub struct ModuleAttrs {
|
||||
}
|
||||
|
||||
impl TryFrom<AttributeArgs> for ModuleAttrs {
|
||||
type Error = syn::Error;
|
||||
type Error = Error;
|
||||
|
||||
fn try_from(args: AttributeArgs) -> Result<Self, Self::Error> {
|
||||
let mut package_name = None;
|
||||
@ -50,7 +51,7 @@ impl TryFrom<AttributeArgs> for ModuleAttrs {
|
||||
}
|
||||
}
|
||||
|
||||
fn expand_env_vars(lit_str: &syn::LitStr) -> Result<String, syn::Error> {
|
||||
fn expand_env_vars(lit_str: &syn::LitStr) -> Result<String, Error> {
|
||||
let input = lit_str.value();
|
||||
let mut expanded = String::with_capacity(input.len());
|
||||
|
||||
@ -105,7 +106,7 @@ pub struct FunctionAttrs {
|
||||
}
|
||||
|
||||
impl TryFrom<AttributeArgs> for FunctionAttrs {
|
||||
type Error = syn::Error;
|
||||
type Error = Error;
|
||||
|
||||
fn try_from(args: AttributeArgs) -> Result<Self, Self::Error> {
|
||||
let mut attrs = FunctionAttrs::default();
|
||||
|
@ -1,8 +1,7 @@
|
||||
use anyhow::Error;
|
||||
|
||||
use proc_macro2::{Ident, Span, TokenStream};
|
||||
|
||||
use quote::quote;
|
||||
use syn::Error;
|
||||
|
||||
use crate::attribs::FunctionAttrs;
|
||||
|
||||
|
@ -7,17 +7,16 @@ extern crate proc_macro2;
|
||||
|
||||
use std::convert::TryFrom;
|
||||
|
||||
use anyhow::Error;
|
||||
|
||||
use proc_macro::TokenStream as TokenStream_1;
|
||||
use proc_macro2::TokenStream;
|
||||
|
||||
use syn::Error;
|
||||
use syn::parse_macro_input;
|
||||
use syn::AttributeArgs;
|
||||
|
||||
macro_rules! format_err {
|
||||
($span:expr => $($msg:tt)*) => { syn::Error::new_spanned($span, format!($($msg)*)) };
|
||||
($span:expr, $($msg:tt)*) => { syn::Error::new($span, format!($($msg)*)) };
|
||||
($span:expr => $($msg:tt)*) => { Error::new_spanned($span, format!($($msg)*)) };
|
||||
($span:expr, $($msg:tt)*) => { Error::new($span, format!($($msg)*)) };
|
||||
}
|
||||
|
||||
macro_rules! bail {
|
||||
@ -33,12 +32,9 @@ mod package;
|
||||
fn handle_error(mut item: TokenStream, data: Result<TokenStream, Error>) -> TokenStream {
|
||||
match data {
|
||||
Ok(output) => output,
|
||||
Err(err) => match err.downcast::<syn::Error>() {
|
||||
Ok(err) => {
|
||||
Err(err) => {
|
||||
item.extend(err.to_compile_error());
|
||||
item
|
||||
}
|
||||
Err(err) => panic!("error in api/router macro: {}", err),
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -55,6 +51,8 @@ fn handle_error(mut item: TokenStream, data: Result<TokenStream, Error>) -> Toke
|
||||
/// // 'name', 'lib' and 'file' expand environment variables such as `${CARGO_PKG_NAME}`
|
||||
/// #[perlmod::package(name = "RSPM::Foo", lib = "perlmod_test", file = "/dev/null")]
|
||||
/// mod an_unused_name {
|
||||
/// # pub mod anyhow { pub type Error = String; pub fn bail() {} }
|
||||
/// # macro_rules! bail { ($($msg:tt)+) => { format!($($msg)+) }; }
|
||||
/// use anyhow::{bail, Error};
|
||||
///
|
||||
/// // This function can be used like `RSPM::Foo::foo(1, 2);` in perl.
|
||||
|
@ -1,12 +1,11 @@
|
||||
use std::convert::TryFrom;
|
||||
use std::iter::IntoIterator;
|
||||
|
||||
use anyhow::Error;
|
||||
|
||||
use proc_macro2::TokenStream;
|
||||
|
||||
use quote::quote;
|
||||
use syn::punctuated::Punctuated;
|
||||
use syn::Error;
|
||||
use syn::{AttributeArgs, Token};
|
||||
|
||||
use crate::attribs::FunctionAttrs;
|
||||
|
@ -1,10 +1,9 @@
|
||||
use std::convert::TryFrom;
|
||||
use std::env;
|
||||
|
||||
use anyhow::Error;
|
||||
|
||||
use proc_macro2::{Ident, Span};
|
||||
|
||||
use syn::Error;
|
||||
use syn::AttributeArgs;
|
||||
|
||||
use crate::attribs::ModuleAttrs;
|
||||
@ -121,9 +120,9 @@ impl Package {
|
||||
|
||||
let path = std::path::Path::new(&file_name);
|
||||
if let Some(parent) = path.parent() {
|
||||
std::fs::create_dir_all(parent)?;
|
||||
std::fs::create_dir_all(parent).map_err(io_err)?;
|
||||
}
|
||||
std::fs::write(path, source.as_bytes())?;
|
||||
std::fs::write(path, source.as_bytes()).map_err(io_err)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@ -133,7 +132,11 @@ impl Package {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_default_lib_name(why: Span) -> Result<String, syn::Error> {
|
||||
fn io_err<E: ToString>(err: E) -> Error {
|
||||
Error::new(Span::call_site(), err.to_string())
|
||||
}
|
||||
|
||||
pub fn get_default_lib_name(why: Span) -> Result<String, Error> {
|
||||
env::var("CARGO_PKG_NAME")
|
||||
.map(|s| s.replace('-', "_"))
|
||||
.map_err(|err| {
|
||||
|
Loading…
Reference in New Issue
Block a user