Path: blob/main/crates/component-macro/test-helpers/src/lib.rs
1692 views
use proc_macro::TokenStream;1use proc_macro2::{Ident, Span};2use quote::quote;34#[proc_macro]5pub fn foreach(input: TokenStream) -> TokenStream {6let input = proc_macro2::TokenStream::from(input);7let mut cwd = std::env::current_dir().unwrap();8cwd.push("crates/component-macro/tests/codegen");9let mut result = Vec::new();10for f in cwd.read_dir().unwrap() {11let f = f.unwrap().path();12if f.extension().and_then(|s| s.to_str()) == Some("wit") || f.is_dir() {13let name = f.file_stem().unwrap().to_str().unwrap();14let ident = Ident::new(&name.replace("-", "_"), Span::call_site());15let path = f.to_str().unwrap();16result.push(quote! {17#input!(#ident #name #path);18});19}20}21(quote!( #(#result)*)).into()22}232425