From 422909352e6167c8d3c79802f87daf115e1c4e5d Mon Sep 17 00:00:00 2001 From: ProfessionalUwU Date: Fri, 16 Jun 2023 01:58:35 +0200 Subject: [PATCH] Find new packages We find new packages by getting the folder names in the DBPath local --- src/Pacserver/Pacserver.cs | 20 +++++++++++++++++--- src/Pacserver/Program.cs | 15 ++++++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/Pacserver/Pacserver.cs b/src/Pacserver/Pacserver.cs index 5fc9a72..8ce63f4 100644 --- a/src/Pacserver/Pacserver.cs +++ b/src/Pacserver/Pacserver.cs @@ -3,8 +3,8 @@ using System.Text.RegularExpressions; namespace Pacserver.Utils; public class PacserverUtils { - public string pacmanCacheDirectory { get; set; } = string.Empty; - public static string pacmanDatabaseDirectory { get; set; } = string.Empty; + public string pacmanCacheDirectory = string.Empty; + public static string pacmanDatabaseDirectory = string.Empty; public static List pathsToDetermine = new List() { "CacheDir", "DBPath" }; public void readPacmanConfig() { using (StreamReader file = new StreamReader("/etc/pacman.conf")) { @@ -36,8 +36,22 @@ public class PacserverUtils { } } - public void checkForNewerPackagesAndDatabases() { + private List packageNamesAndVersion = new List(); + public void getEveryPackageNameAndVersionViaFolderName(string filePath) { + string[] directories = Directory.GetDirectories(pacmanDatabaseDirectory + "local/"); + foreach (string directory in directories) { + packageNamesAndVersion.Add(new DirectoryInfo(directory).Name); + } + File.WriteAllLines(filePath, packageNamesAndVersion); + } + public List newerPackages = new List(); + public void checkForNewerPackages() { + if (File.Exists("/tmp/before_update.txt") && File.Exists("/tmp/after_update.txt")) { + newerPackages = File.ReadAllLines("/tmp/after_update.txt").Except(File.ReadLines("/tmp/before_update.txt")).ToList(); + } else { + throw new FileNotFoundException("Necessary files could not be found"); + } } private static List newerPackagesAndDatabases = new List(); diff --git a/src/Pacserver/Program.cs b/src/Pacserver/Program.cs index 9840ca8..c66eb3c 100644 --- a/src/Pacserver/Program.cs +++ b/src/Pacserver/Program.cs @@ -10,12 +10,25 @@ public class Program { return; } + PacserverUtils utils = new PacserverUtils(); + switch (args[0]) { case "determinePacmanCacheDirectory": - PacserverUtils utils = new PacserverUtils(); utils.readPacmanConfig(); Console.WriteLine(utils.pacmanCacheDirectory); break; + case "before": + utils.readPacmanConfig(); + utils.getEveryPackageNameAndVersionViaFolderName("/tmp/before_update.txt"); + break; + case "after": + utils.readPacmanConfig(); + utils.getEveryPackageNameAndVersionViaFolderName("/tmp/after_update.txt"); + break; + case "diff": + utils.checkForNewerPackages(); + Console.WriteLine(utils.newerPackages); + break; default: Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(args[0] + " is not a recognized option.");