perlmod-macro: drop anyhow dependency

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Wolfgang Bumiller 2021-10-15 09:45:57 +02:00
parent d253472380
commit f888c202cc
6 changed files with 22 additions and 23 deletions

View File

@ -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" ] }

View File

@ -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();

View File

@ -1,8 +1,7 @@
use anyhow::Error;
use proc_macro2::{Ident, Span, TokenStream};
use quote::quote;
use syn::Error;
use crate::attribs::FunctionAttrs;

View File

@ -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.

View File

@ -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;

View File

@ -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| {