Cosmos/source/Cosmos.Build.Builder/FileMgr.cs

58 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Cosmos.Build.Installer;
namespace Cosmos.Build.Builder {
public class FileMgr : IDisposable {
public string SrcPath;
public string DestPath;
public FileMgr(string aSrcPath, string aDestPath) {
SrcPath = aSrcPath;
DestPath = aDestPath;
}
public void ResetReadOnly(string aPathname) {
var xAttrib = File.GetAttributes(aPathname);
if ((xAttrib & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) {
File.SetAttributes(aPathname, xAttrib & ~FileAttributes.ReadOnly);
}
}
public void Copy(string aSrcPathname, bool aClearReadonly = true) {
Copy(aSrcPathname, Path.GetFileName(aSrcPathname), aClearReadonly);
}
public void Copy(string aSrcPathname, string aDestPathname, bool aClearReadonly = true) {
Log.WriteLine("Copy");
string xSrc = Path.Combine(SrcPath, aSrcPathname);
Log.WriteLine(" From: " + xSrc);
string xDest = Path.Combine(DestPath, aDestPathname);
Log.WriteLine(" To: " + xDest);
// Copying files that are in TFS often they will be read only, so need to kill this file before copy
// We don't use TFS any more.. but left the code.
if (aClearReadonly && File.Exists(xDest)) {
ResetReadOnly(xDest);
}
File.Copy(xSrc, xDest, true);
ResetReadOnly(xDest);
}
// Dummy pattern to allow scoping via using.
// Hacky, but for what we are doing its fine and the GC
// effects are negligible in our usage.
protected virtual void Dispose(bool aDisposing) {
}
public void Dispose() {
Dispose(true);
}
}
}