From 596fc81ec5a2ebb4c0d3d18626dce8c46fda328b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Wed, 16 Apr 2025 00:28:23 +0200 Subject: [PATCH] Add application arguments instead of constant file names --- ResticLogParser/Program.cs | 10 +++++++++- ResticLogParser/src/LogParser.cs | 30 ++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/ResticLogParser/Program.cs b/ResticLogParser/Program.cs index 51df1c3..b9998b5 100644 --- a/ResticLogParser/Program.cs +++ b/ResticLogParser/Program.cs @@ -1,3 +1,11 @@ using ResticLogParser.src; -new LogParser(@"C:\Users\warrence\Documents\My Documents\restic\restic-logfile.txt").Run(); \ No newline at end of file +if (args.Length < 3 || string.IsNullOrEmpty(args[0]) || string.IsNullOrEmpty(args[1]) || string.IsNullOrEmpty(args[2])) +{ + Console.WriteLine($"Invalid parameters."); + Console.WriteLine($" ResticLogParser "); + return 1; +} + +new LogParser(args[0], args[1], args[2]).Run(); +return 0; diff --git a/ResticLogParser/src/LogParser.cs b/ResticLogParser/src/LogParser.cs index f21c869..f083949 100644 --- a/ResticLogParser/src/LogParser.cs +++ b/ResticLogParser/src/LogParser.cs @@ -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 _files = new(); private readonly List _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();