@@ -55,7 +55,17 @@ fn stage_requirements(requirements: &[Requirement], tool_path: &Path, path: &Pat
5555 if let Requirement :: InitialWorkDirRequirement ( iwdr) = requirement {
5656 for listing in & iwdr. listing {
5757 let into_path = match listing {
58- WorkDirItem :: Dirent ( dirent) => path. join ( & dirent. entryname ) ,
58+ WorkDirItem :: Dirent ( dirent) => {
59+ if let Some ( entryname) = & dirent. entryname {
60+ path. join ( entryname)
61+ } else {
62+ let eval = match & dirent. entry {
63+ Entry :: Source ( src) => Path :: new ( src) ,
64+ Entry :: Include ( include) => & get_iwdr_src ( tool_path, & include. include ) ?,
65+ } ;
66+ path. join ( eval. file_name ( ) . unwrap ( ) )
67+ }
68+ }
5969 WorkDirItem :: FileOrDirectory ( val) => match & * * val {
6070 DefaultValue :: File ( file) => {
6171 let location = Path :: new ( file. location . as_ref ( ) . unwrap ( ) ) ;
@@ -75,7 +85,12 @@ fn stage_requirements(requirements: &[Requirement], tool_path: &Path, path: &Pat
7585 WorkDirItem :: Dirent ( dirent) => match & dirent. entry {
7686 Entry :: Source ( src) => {
7787 if fs:: exists ( src) . unwrap_or ( false ) {
78- copy_file ( src, & into_path) . map_err ( |e| format ! ( "Failed to copy file from {} to {}: {}" , src, path_str, e) ) ?;
88+ let src = Path :: new ( src) ; //is safer ;)
89+ if src. is_file ( ) {
90+ copy_file ( src, & into_path) . map_err ( |e| format ! ( "Failed to copy file from {:?} to {}: {}" , src, path_str, e) ) ?;
91+ } else {
92+ copy_dir ( src, & into_path) . map_err ( |e| format ! ( "Failed to copy dir from {:?} to {}: {}" , src, path_str, e) ) ?;
93+ }
7994 } else {
8095 create_and_write_file ( & into_path, src) . map_err ( |e| format ! ( "Failed to create file {:?}: {}" , into_path, e) ) ?;
8196 }
@@ -251,7 +266,7 @@ fn stage_secondary_inputs(incoming_data: &DefaultValue, path: &Path, input: &Com
251266 & file_dir. join ( format ! ( "*{}" , item. pattern) ) . to_string_lossy ( ) . into_owned ( )
252267 } ;
253268 let pattern = pattern. trim ( ) ;
254-
269+
255270 for res in glob ( pattern) ? {
256271 let res = res?;
257272 let dest = path. join ( & res) ;
0 commit comments