mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Fix move_directory_files tool dependency action when destination is not empty
Historically this action moves the contents of the source directory to the
destination directory. Commit d38936bd8d
broke the install when e.g. the destination is $INSTALL_DIR, which is
created by Galaxy and is not empty (contains INSTALLATION.log after first
action).
This commit is contained in:
@@ -847,11 +847,17 @@ class MoveDirectoryFiles( RecipeStep ):
|
||||
|
||||
def move_directory_files( self, current_dir, source_dir, destination_dir ):
|
||||
source_directory = os.path.abspath( os.path.join( current_dir, source_dir ) )
|
||||
destination_directory = os.path.join( destination_dir )
|
||||
destination_parent_directory = os.path.dirname(destination_directory)
|
||||
if not os.path.isdir( destination_parent_directory ):
|
||||
os.makedirs( destination_parent_directory )
|
||||
shutil.move( source_directory, destination_directory )
|
||||
destination_directory = os.path.abspath(os.path.join(destination_dir))
|
||||
if not os.path.isdir(destination_directory):
|
||||
os.makedirs(destination_directory)
|
||||
for dir_entry in os.listdir(source_directory):
|
||||
source_entry = os.path.join(source_directory, dir_entry)
|
||||
if os.path.islink(source_entry):
|
||||
destination_entry = os.path.join(destination_directory, dir_entry)
|
||||
os.symlink(os.readlink(source_entry), destination_entry)
|
||||
os.remove(source_entry)
|
||||
else:
|
||||
shutil.move(source_entry, destination_directory)
|
||||
|
||||
def prepare_step( self, tool_dependency, action_elem, action_dict, install_environment, is_binary_download ):
|
||||
# <action type="move_directory_files">
|
||||
|
||||
Reference in New Issue
Block a user