mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 12:30:32 +00:00
58 lines
1.7 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|