@@ -837,13 +837,16 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
837837 } ;
838838
839839 // split the resource path directories
840+ let components_count = src. components ( ) . count ( ) ;
840841 let directories = src
841842 . components ( )
842843 . filter ( |component| {
843844 let comp = component. as_os_str ( ) ;
844845 comp != "." && comp != ".."
845846 } )
847+ . take ( components_count - 1 ) // the last component is the file
846848 . collect :: < Vec < _ > > ( ) ;
849+
847850 // transform the directory structure to a chained vec structure
848851 let first_directory = directories
849852 . first ( )
@@ -866,9 +869,9 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
866869 . get_mut ( & first_directory)
867870 . expect ( "Unable to handle resources" ) ;
868871
869- let last_index = directories. len ( ) - 1 ;
870872 let mut path = String :: new ( ) ;
871- for ( i, directory) in directories. into_iter ( ) . enumerate ( ) {
873+ // the first component is already parsed on `first_directory` so we skip(1)
874+ for directory in directories. into_iter ( ) . skip ( 1 ) {
872875 let directory_name = directory
873876 . as_os_str ( )
874877 . to_os_string ( )
@@ -877,30 +880,24 @@ fn generate_resource_data(settings: &Settings) -> crate::Result<ResourceMap> {
877880 path. push_str ( directory_name. as_str ( ) ) ;
878881 path. push ( std:: path:: MAIN_SEPARATOR ) ;
879882
880- if i == last_index {
881- directory_entry. add_file ( resource_entry) ;
882- break ;
883- } else if i == 0 {
884- continue ;
885- } else {
886- let index = directory_entry
887- . directories
888- . iter ( )
889- . position ( |f| f. path == path) ;
890- match index {
891- Some ( i) => directory_entry = directory_entry. directories . get_mut ( i) . unwrap ( ) ,
892- None => {
893- directory_entry. directories . push ( ResourceDirectory {
894- path : path. clone ( ) ,
895- name : directory_name,
896- directories : vec ! [ ] ,
897- files : vec ! [ ] ,
898- } ) ;
899- directory_entry = directory_entry. directories . iter_mut ( ) . last ( ) . unwrap ( ) ;
900- }
883+ let index = directory_entry
884+ . directories
885+ . iter ( )
886+ . position ( |f| f. path == path) ;
887+ match index {
888+ Some ( i) => directory_entry = directory_entry. directories . get_mut ( i) . unwrap ( ) ,
889+ None => {
890+ directory_entry. directories . push ( ResourceDirectory {
891+ path : path. clone ( ) ,
892+ name : directory_name,
893+ directories : vec ! [ ] ,
894+ files : vec ! [ ] ,
895+ } ) ;
896+ directory_entry = directory_entry. directories . iter_mut ( ) . last ( ) . unwrap ( ) ;
901897 }
902898 }
903899 }
900+ directory_entry. add_file ( resource_entry) ;
904901 }
905902
906903 Ok ( resources)
0 commit comments