@@ -645,27 +645,37 @@ fn mk(config: &Config, opts: &MkOptions<'_>) -> CargoResult<()> {
645
645
init_vcs ( path, vcs, config) ?;
646
646
write_ignore_file ( path, & ignore, vcs) ?;
647
647
648
- let ( author_name, email) = discover_author ( path) ?;
649
- let author = match ( cfg. name , cfg. email , author_name, email) {
650
- ( Some ( name) , Some ( email) , _, _)
651
- | ( Some ( name) , None , _, Some ( email) )
652
- | ( None , Some ( email) , Some ( name) , _)
653
- | ( None , None , Some ( name) , Some ( email) ) => {
648
+ let ( discovered_name, discovered_email) = discover_author ( path) ?;
649
+
650
+ // "Name <email>" or "Name" or "<email>" or None if neither name nor email is obtained
651
+ // cfg takes priority over the discovered ones
652
+ let author_name = match ( cfg. name , discovered_name) {
653
+ ( Some ( name) , _) | ( _, Some ( name) ) => Some ( name) ,
654
+ ( None , None ) => None ,
655
+ } ;
656
+
657
+ let author_email = match ( cfg. email , discovered_email) {
658
+ ( Some ( email) , _) | ( _, Some ( email) ) => Some ( email) ,
659
+ ( None , None ) => None ,
660
+ } ;
661
+
662
+ let author = match ( author_name, author_email) {
663
+ ( Some ( name) , Some ( email) ) => {
654
664
if email. is_empty ( ) {
655
- name
665
+ Some ( name)
656
666
} else {
657
- format ! ( "{} <{}>" , name, email)
667
+ Some ( format ! ( "{} <{}>" , name, email) )
658
668
}
659
669
}
660
- ( Some ( name) , None , _ , None ) | ( None , None , Some ( name) , None ) => name ,
661
- ( None , Some ( email) , None , _ ) | ( None , None , None , Some ( email ) ) => {
670
+ ( Some ( name) , None ) => Some ( name) ,
671
+ ( None , Some ( email) ) => {
662
672
if email. is_empty ( ) {
663
- "" . to_string ( )
673
+ None
664
674
} else {
665
- format ! ( "<{}>" , email)
675
+ Some ( format ! ( "<{}>" , email) )
666
676
}
667
677
}
668
- ( None , None , None , None ) => "" . to_string ( ) ,
678
+ ( None , None ) => None ,
669
679
} ;
670
680
671
681
let mut cargotoml_path_specifier = String :: new ( ) ;
@@ -714,10 +724,9 @@ edition = {}
714
724
[dependencies]
715
725
{}"# ,
716
726
name,
717
- if author. is_empty( ) {
718
- format!( "" )
719
- } else {
720
- format!( "{}" , toml:: Value :: String ( author) )
727
+ match author {
728
+ Some ( value) => format!( "{}" , toml:: Value :: String ( value) ) ,
729
+ None => format!( "" ) ,
721
730
} ,
722
731
match opts. edition {
723
732
Some ( edition) => toml:: Value :: String ( edition. to_string( ) ) ,
0 commit comments