private bool ReplaceWithTempIfChanged(string fileTemp, string file, bool dry = false)
{
try
{
if (!File.Exists(file))
{
if (dry)
{
throw new DryRunFailedException(file);
}
File.Move(fileTemp, file);
return true;
}
var fileInfo = new FileInfo(file);
var fileTempInfo = new FileInfo(fileTemp);
if (fileInfo.Length != fileTempInfo.Length || File.ReadAllText(file) != File.ReadAllText(fileTemp))
{
if (dry)
{
throw new DryRunFailedException(file);
}
File.Copy(fileTemp, file, true);
File.Delete(fileTemp);
return true;
}
return false;
}
finally
{
File.Delete(fileTemp);
}
}