diff --git a/src/Pacserver/Pacserver.cs b/src/Pacserver/Pacserver.cs index 985bc11..c5e7e48 100644 --- a/src/Pacserver/Pacserver.cs +++ b/src/Pacserver/Pacserver.cs @@ -93,6 +93,24 @@ public class PacserverUtils { } } + public List databasesToTransfer = new List(); + public void filterDiffOutputForDatabases() { + foreach (string database in diffOfPackagesOrDatabases) { + databasesToTransfer.Add(getDatabaseFromRegex(database, @"\/(?:[\w.-]+\/)*[\w.-]+(?:\.\w+)*\/*db")); // https://regex101.com/r/Wm5M0P/1 + } + } + + public string getDatabaseFromRegex(string input, string pattern) { + string match = string.Empty; + MatchCollection matchCollection = Regex.Matches(input, pattern); + + foreach (Match matches in matchCollection) { + match = matches.Value; + } + + return match; + } + private static List newerPackagesAndDatabases = new List(); public async void transferPacmanCache() { HttpClient client = new HttpClient(); diff --git a/src/Pacserver/Program.cs b/src/Pacserver/Program.cs index e549736..0c750e2 100644 --- a/src/Pacserver/Program.cs +++ b/src/Pacserver/Program.cs @@ -6,7 +6,7 @@ public class Program { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Please specify an option."); Console.ResetColor(); - Console.WriteLine("Possible options are: determinePacmanCacheDirectory, packagesBefore, packagesAfter, diffPackages, databasesBefore, databasesAfter, diffDatabases"); + Console.WriteLine("Possible options are: determinePacmanCacheDirectory, packagesBefore, packagesAfter, diffPackages, databasesBefore, databasesAfter, diffDatabases, filter"); return; } @@ -27,7 +27,7 @@ public class Program { break; case "diffPackages": utils.diff("/tmp/before_update.txt", "/tmp/after_update.txt"); - string packages = string.Join(",", utils.diffOfPackagesOrDatabases); + string packages = string.Join("\n", utils.diffOfPackagesOrDatabases); Console.WriteLine(packages); break; case "databasesBefore": @@ -40,14 +40,20 @@ public class Program { break; case "diffDatabases": utils.diff("/tmp/databases_before.txt", "/tmp/databases_after.txt"); - string databases = string.Join(",", utils.diffOfPackagesOrDatabases); + string databases = string.Join("\n", utils.diffOfPackagesOrDatabases); Console.WriteLine(databases); break; + case "filter": + utils.diff("/tmp/databases_before.txt", "/tmp/databases_after.txt"); + utils.filterDiffOutputForDatabases(); + string filteredDatabases = string.Join("\n", utils.databasesToTransfer); + Console.WriteLine(filteredDatabases); + break; default: Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(args[0] + " is not a recognized option."); Console.ResetColor(); - Console.WriteLine("Possible options are: determinePacmanCacheDirectory"); + Console.WriteLine("Possible options are: determinePacmanCacheDirectory, packagesBefore, packagesAfter, diffPackages, databasesBefore, databasesAfter, diffDatabases, filter"); break; } }