using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Eugen.ESystem.IO;
namespace CorrectDateInCopyright
{
static class CorrectDateInLine
{
//public CorrectDateInLine()
//{
//}
static CorrectDateInLine()
{
}
public static string LogFile { set; get; }
///
/// Corrects the specified file
///
/// A valid filename with path and extension.
public static void Correct(string fullFileName)
{
List lines = new List();
lines = ReadFileLineByLine.Read(fullFileName);
for (int i = 0; i < lines.Count; i++)
{
if (lines[i].Contains("AssemblyCopyright"))
{
lines[i] = SwapDate(lines[i]);
}
}
WriteFile(fullFileName, lines);
}
private static string SwapDate(string line)
{
var log = new LogWriter(String.Concat(Path.GetDirectoryName(LogFile), "\\"), Path.GetFileName(LogFile));
log.WriteMessage(String.Concat(" Alter Wert: ", line));
string startPart = "[assembly: AssemblyCopyright(\"Copyright © ";
string endPart = " by Eugen Höglinger\")]";
string startDate = ExtractStartDate(line);
string currentDate = DateTime.Now.ToString("yyyy");
//Neu zusammenstellen
if (startDate == currentDate)
{
line = String.Concat(startPart, startDate, endPart);
}
else
{
line = String.Concat(startPart, startDate, "-", currentDate, endPart);
}
log.WriteMessage(String.Concat(" Neuer Wert: ", line));
return line;
}
private static string ExtractStartDate(string text)
{
char[] delimiterChars = { ' ', '-' }; //Trennzeichen
string[] words = text.Split(delimiterChars);
int year = 0;
foreach (var word in words)
{
//Prüfen ob der Wert eine Zahl ist
if (int.TryParse(word, out year))
{
break; //Sobald eine Zahl gefunden wurde, dann aufhören
}
}
return year.ToString();
}
private static void WriteFile(string fullFileName, List lines)
{
//Datei umbenennen
File.Move(fullFileName, String.Concat(fullFileName, "_old"));
//Datei schreiben
StreamWriter writer;
writer = new StreamWriter(fullFileName, true, Encoding.Default);
foreach (var item in lines)
{
writer.WriteLine(item);
}
writer.Close();
//Umbenannte Datei löschen
File.Delete(String.Concat(fullFileName, "_old"));
}
}
}