--- /dev/null
+//! This crate provides a derive macro for `ConfigType`.
+
+#![recursion_limit = "256"]
+
+extern crate proc_macro;
+
+mod attrs;
+mod config_type;
+mod item_enum;
+mod item_struct;
+mod utils;
+
+use proc_macro::TokenStream;
+use syn::parse_macro_input;
+
+#[proc_macro_attribute]
+pub fn config_type(_args: TokenStream, input: TokenStream) -> TokenStream {
+ let input = parse_macro_input!(input as syn::Item);
+ let output = config_type::define_config_type(&input);
+
+ #[cfg(feature = "debug-with-rustfmt")]
+ {
+ utils::debug_with_rustfmt(&output);
+ }
+
+ TokenStream::from(output)
+}