in src/CTA.Rules.Actions/ProjectLevelActions.cs [17:59]
public Func<string, ProjectType, string> GetArchiveFilesAction(string archiveFiles)
{
string func(string projectDir, ProjectType projectType)
{
List<string> archived = new List<string>();
List<string> deleted = new List<string>();
projectDir = Directory.GetParent(projectDir).FullName;
List<string> result = new List<string>();
var filesToArchive = archiveFiles.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
foreach (var fileToArchive in filesToArchive)
{
IEnumerable<string> files = Directory.EnumerateFiles(projectDir, fileToArchive, SearchOption.AllDirectories);
if (files != null && files.Count() > 0)
{
result.AddRange(files);
}
}
foreach (string s in result)
{
if (!s.EndsWith(".bak"))
{
string backupFile = string.Concat(s, ".bak");
if (File.Exists(backupFile))
{
File.Delete(backupFile);
deleted.Add(backupFile);
}
File.Move(s, string.Concat(s, ".bak"));
archived.Add(s);
}
}
return string.Concat(
deleted.Count > 0 ? string.Concat("Deleted: ", string.Join(",", deleted)) : string.Empty,
archived.Count > 0 ? string.Concat("Archived: ", string.Join(",", archived)) : string.Empty);
}
return func;
}