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