forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
import sys.FileSystem;
 | 
						|
 | 
						|
class CopyFile
 | 
						|
{
 | 
						|
   public var name:String;
 | 
						|
   public var from:String;
 | 
						|
   public var toolId:String;
 | 
						|
   public var allowMissing:Bool;
 | 
						|
   public var overwrite:Overwrite;
 | 
						|
 | 
						|
   public function new(inName:String, inFrom:String, inAlowMissing:Bool, inOverwrite:Overwrite, ?inToolId:String)
 | 
						|
   {
 | 
						|
      name = inName;
 | 
						|
      from = inFrom;
 | 
						|
      toolId = inToolId;
 | 
						|
      allowMissing = inAlowMissing;
 | 
						|
      overwrite = inOverwrite;
 | 
						|
   }
 | 
						|
 | 
						|
   public function copy(inTo:String)
 | 
						|
   {
 | 
						|
      var fromFile = from + "/" + name;
 | 
						|
      var toFile = inTo + name;
 | 
						|
      copyFile(fromFile, toFile, allowMissing, overwrite);
 | 
						|
   }
 | 
						|
 | 
						|
 | 
						|
   public static function copyFile(fromFile:String, toFile:String, allowMissing = false, overwrite:Overwrite = Overwrite.ALWAYS, addExePermission=false)
 | 
						|
   {
 | 
						|
      if (!FileSystem.exists(fromFile))
 | 
						|
      {
 | 
						|
         if (allowMissing)
 | 
						|
         {
 | 
						|
            Log.v('Missing "$fromFile" - ignore');
 | 
						|
            return;
 | 
						|
         }
 | 
						|
         Log.error("Error - source file does not exist " + fromFile);
 | 
						|
      }
 | 
						|
      try
 | 
						|
      {
 | 
						|
         Log.v('Copy "$fromFile" to "$toFile"');
 | 
						|
 | 
						|
         var applyCopy = true;
 | 
						|
         switch(overwrite)
 | 
						|
         {
 | 
						|
            case Overwrite.IF_NEWER:
 | 
						|
               if(FileSystem.exists(toFile)
 | 
						|
                  && (FileSystem.stat(fromFile).mtime.getTime() - FileSystem.stat(toFile).mtime.getTime()) <= 0)
 | 
						|
               {
 | 
						|
                  Log.v('The "$fromFile" is older or it hasn\'t changes. Skip copy');
 | 
						|
                  applyCopy = false;
 | 
						|
               }
 | 
						|
 | 
						|
            case Overwrite.NEVER:
 | 
						|
               if(FileSystem.exists(toFile))
 | 
						|
               {
 | 
						|
                  Log.v('The "$toFile" file exists. Skip copy');
 | 
						|
                  applyCopy = false;
 | 
						|
               }
 | 
						|
 | 
						|
            case Overwrite.ALWAYS:
 | 
						|
 | 
						|
            default:
 | 
						|
               Log.v('The Overwrite option "$overwrite" is not supported. ' +
 | 
						|
                     'Possible values: {${Overwrite.ALWAYS}, ${Overwrite.IF_NEWER}, ${Overwrite.NEVER}}. ' +
 | 
						|
                     'Applying "${Overwrite.ALWAYS}" by default');
 | 
						|
         }
 | 
						|
 | 
						|
         if(applyCopy)
 | 
						|
         {
 | 
						|
            sys.io.File.copy( fromFile, toFile );
 | 
						|
            if (addExePermission)
 | 
						|
            {
 | 
						|
               Log.v("chmod 755 " + toFile );
 | 
						|
               Sys.command("chmod", ["755", toFile]);
 | 
						|
            }
 | 
						|
         }
 | 
						|
      }
 | 
						|
      catch(e:Dynamic)
 | 
						|
      {
 | 
						|
         if (allowMissing)
 | 
						|
         {
 | 
						|
            Log.v('Could not copy to "$toFile" - ignore');
 | 
						|
            return;
 | 
						|
         }
 | 
						|
         Log.error('Error $e - could not copy to "$toFile"');
 | 
						|
      }
 | 
						|
   }
 | 
						|
}
 | 
						|
 | 
						|
@:enum
 | 
						|
abstract Overwrite(String) from String to String
 | 
						|
{
 | 
						|
    var ALWAYS = "always";
 | 
						|
    var IF_NEWER = "ifNewer";
 | 
						|
    var NEVER = "never";
 | 
						|
} |