Add application arguments instead of constant file names

This commit is contained in:
Stefan Müller 2025-04-16 00:28:23 +02:00
parent 3990ca72d9
commit 596fc81ec5
2 changed files with 29 additions and 11 deletions

View File

@ -1,3 +1,11 @@
using ResticLogParser.src;
new LogParser(@"C:\Users\warrence\Documents\My Documents\restic\restic-logfile.txt").Run();
if (args.Length < 3 || string.IsNullOrEmpty(args[0]) || string.IsNullOrEmpty(args[1]) || string.IsNullOrEmpty(args[2]))
{
Console.WriteLine($"Invalid parameters.");
Console.WriteLine($" ResticLogParser <log-file-name> <files-output-file-name> <directories-output-file-name>");
return 1;
}
new LogParser(args[0], args[1], args[2]).Run();
return 0;

View File

@ -14,33 +14,45 @@ namespace ResticLogParser.src
new(@"modified\s+(.+), saved in \d+\.\d+s \((\d+(?:\.\d+)? .+) added, (\d+(?:\.\d+)? .+) stored\)");
private string _logFileName;
private string _filesOutputFileName;
private string _directoriesOutputFileName;
private readonly List<FileLogEntry> _files = new();
private readonly List<DirectoryNode> _directories = new();
private readonly DirectoryNode _root = new(null, "/", "/");
public LogParser(string logFileName)
public LogParser(string logFileName, string filesOutputFileName, string directoriesOutputFileName)
{
if (string.IsNullOrEmpty(logFileName))
{
throw new ArgumentNullException(nameof(logFileName));
}
if (string.IsNullOrEmpty(filesOutputFileName))
{
throw new ArgumentNullException(nameof(filesOutputFileName));
}
if (string.IsNullOrEmpty(directoriesOutputFileName))
{
throw new ArgumentNullException(nameof(directoriesOutputFileName));
}
_logFileName = logFileName;
_filesOutputFileName = filesOutputFileName;
_directoriesOutputFileName = directoriesOutputFileName;
}
public void Run()
{
Console.WriteLine($"Running restic log parser for '{_logFileName}'...");
ParseLogFile();
WriteFileInformation();
WriteDirectoryInformation();
ParseLogFile(_logFileName);
WriteFileInformation(_filesOutputFileName);
WriteDirectoryInformation(_directoriesOutputFileName);
}
private void ParseLogFile()
private void ParseLogFile(string fileName)
{
try
{
using StreamReader reader = new(_logFileName);
using StreamReader reader = new(fileName);
while (!reader.EndOfStream)
{
string line = reader.ReadLine()!;
@ -97,9 +109,8 @@ namespace ResticLogParser.src
parent.FileCount++;
}
private void WriteFileInformation()
private void WriteFileInformation(string outputFileName)
{
string outputFileName = Path.Combine(Path.GetDirectoryName(_logFileName)!, "restic-added-data-files.txt");
Console.WriteLine($"Writing added files to '{outputFileName}'...");
_files.Sort();
@ -113,9 +124,8 @@ namespace ResticLogParser.src
}
}
private void WriteDirectoryInformation()
private void WriteDirectoryInformation(string outputFileName)
{
string outputFileName = Path.Combine(Path.GetDirectoryName(_logFileName)!, "restic-added-data-dirs.txt");
Console.WriteLine($"Writing directory infos to '{outputFileName}'...");
_directories.Sort();