@@ -83,7 +83,7 @@ impl Job {
8383 }
8484}
8585
86- fn enqueue_readme_jobs ( sender : std:: sync:: mpsc:: Sender < Job > ) {
86+ fn enqueue_readme_jobs ( sender : std:: sync:: mpsc:: Sender < Job > , template_dir : Option < & Path > ) {
8787 let workspace_dir = std:: env:: current_dir ( ) . unwrap ( ) ;
8888 let entries = match fs_err:: read_dir ( & workspace_dir) {
8989 Ok ( e) => e,
@@ -163,7 +163,16 @@ fn enqueue_readme_jobs(sender: std::sync::mpsc::Sender<Job>) {
163163
164164 let crate_name = dir_name. to_string ( ) ;
165165
166- let template_path = if crate_name == "facet" {
166+ // Check for custom template path (from --template-dir or config)
167+ let template_path = if let Some ( custom_dir) = template_dir {
168+ let custom_path = custom_dir. join ( & crate_name) . with_extension ( "md.in" ) ;
169+ if custom_path. exists ( ) {
170+ custom_path
171+ } else {
172+ // Fall back to crate's own template
173+ crate_path. join ( template_name)
174+ }
175+ } else if crate_name == "facet" {
167176 Path :: new ( template_name) . to_path_buf ( )
168177 } else {
169178 crate_path. join ( template_name)
@@ -1067,6 +1076,18 @@ fn main() {
10671076 return ;
10681077 }
10691078
1079+ // Parse --template-dir argument
1080+ let mut template_dir: Option < PathBuf > = None ;
1081+ let mut i = 1 ;
1082+ while i < args. len ( ) {
1083+ if args[ i] == "--template-dir" && i + 1 < args. len ( ) {
1084+ template_dir = Some ( PathBuf :: from ( & args[ i + 1 ] ) ) ;
1085+ i += 2 ;
1086+ } else {
1087+ i += 1 ;
1088+ }
1089+ }
1090+
10701091 let staged_files = match collect_staged_files ( ) {
10711092 Ok ( sf) => sf,
10721093 Err ( e) => {
@@ -1085,8 +1106,9 @@ fn main() {
10851106
10861107 handles. push ( std:: thread:: spawn ( {
10871108 let sender = tx_job. clone ( ) ;
1109+ let template_dir = template_dir. clone ( ) ;
10881110 move || {
1089- enqueue_readme_jobs ( sender) ;
1111+ enqueue_readme_jobs ( sender, template_dir . as_deref ( ) ) ;
10901112 }
10911113 } ) ) ;
10921114
0 commit comments