Abstract get_crate_name() into macro utils.

This commit is contained in:
Jason Volk
2025-06-12 21:31:44 +00:00
parent 026d756ef4
commit 5799059196
2 changed files with 16 additions and 4 deletions

View File

@@ -1,11 +1,11 @@
use proc_macro::TokenStream;
use quote::quote;
use crate::utils::get_crate_name;
pub(super) fn flags_capture(args: TokenStream) -> TokenStream {
let cargo_crate_name = std::env::var("CARGO_CRATE_NAME");
let crate_name = match cargo_crate_name.as_ref() {
| Err(_) => return args,
| Ok(crate_name) => crate_name.trim_start_matches("tuwunel_"),
let Some(crate_name) = get_crate_name() else {
return args;
};
let flag = std::env::args().collect::<Vec<_>>();

View File

@@ -4,6 +4,18 @@ use syn::{Expr, ExprLit, Generics, Lit, Meta, MetaNameValue, parse_str};
use crate::Result;
pub(crate) fn get_crate_name() -> Option<String> {
let cargo_crate_name = std::env::var("CARGO_CRATE_NAME");
match cargo_crate_name.as_ref() {
| Err(_) => None,
| Ok(crate_name) => Some(
crate_name
.trim_start_matches("tuwunel_")
.to_owned(),
),
}
}
pub(crate) fn get_simple_settings(args: &[Meta]) -> HashMap<String, String> {
args.iter().fold(HashMap::new(), |mut map, arg| {
let Meta::NameValue(MetaNameValue { path, value, .. }) = arg else {