@@ -72,7 +72,7 @@ def run_command(self, cmd, suppress_message=False, return_output=False):
7272 if len (output ) == 0 and proc .poll () is not None :
7373 break
7474 if output :
75- decoded_output = output .decode ("utf-8" ).strip ()
75+ decoded_output = output .decode ("utf-8" , errors = "ignore" ).strip ()
7676 if not suppress_message :
7777 self .info (decoded_output )
7878 full_output += decoded_output
@@ -84,7 +84,7 @@ def run_command(self, cmd, suppress_message=False, return_output=False):
8484
8585 err = proc .stderr .read ()
8686 if not suppress_message :
87- self .error (err .decode ("utf-8" ))
87+ self .error (err .decode ("utf-8" , errors = "ignore" ))
8888 if return_output :
8989 return full_output
9090 return False
@@ -341,6 +341,18 @@ def move(self, source, destination):
341341 if os .path .exists (source ):
342342 shutil .move (source , destination )
343343
344+ def copy (self , source , destination ):
345+ """
346+ Move a file or directory from source to destination
347+ """
348+ source = self .path (source )
349+ destination = self .path (destination )
350+ if os .path .exists (source ):
351+ if os .path .isdir (source ):
352+ shutil .copytree (source , destination )
353+ else :
354+ shutil .copyfile (source , destination )
355+
344356 def remove (self , location ):
345357 """
346358 Remove a file or directory if it exists
0 commit comments