public static List<PatchFile> GetRebasePatchFiles()
{
var patchFiles = new List<PatchFile>();
var nextFile = GetNextRebasePatch();
int next;
int.TryParse(nextFile, out next);
var files = new string[0];
if (Directory.Exists(GetRebaseDir()))
files = Directory.GetFiles(GetRebaseDir());
foreach (var fullFileName in files)
{
int n;
var file = fullFileName.Substring(fullFileName.LastIndexOf(Settings.PathSeperator) + 1);
if (!int.TryParse(file, out n))
continue;
var patchFile =
new PatchFile
{
Name = file,
FullName = fullFileName,
IsNext = n == next,
IsSkipped = n < next
};
if (File.Exists(GetRebaseDir() + file))
{
foreach (var line in File.ReadAllLines(GetRebaseDir() + file))
{
if (line.StartsWith("From: "))
if (line.IndexOf('<') > 0 && line.IndexOf('<') < line.Length)
patchFile.Author = line.Substring(6, line.IndexOf('<') - 6).Trim();
else
patchFile.Author = line.Substring(6).Trim();
if (line.StartsWith("Date: "))
if (line.IndexOf('+') > 0 && line.IndexOf('<') < line.Length)
patchFile.Date = line.Substring(6, line.IndexOf('+') - 6).Trim();
else
patchFile.Date = line.Substring(6).Trim();
if (line.StartsWith("Subject: ")) patchFile.Subject = line.Substring(9).Trim();
if (!string.IsNullOrEmpty(patchFile.Author) &&
!string.IsNullOrEmpty(patchFile.Date) &&
!string.IsNullOrEmpty(patchFile.Subject))
break;
}
}
patchFiles.Add(patchFile);
}
return patchFiles;
}