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";
							 | 
						||
| 
								 | 
							
								}
							 |