From 81fc8f188330f6d28b1e80ffc6b0374d685be094 Mon Sep 17 00:00:00 2001 From: ProfessionalUwU Date: Sun, 4 Jun 2023 23:13:30 +0200 Subject: [PATCH 1/2] Implement determinePacmanDatabaseDirectory Reused the code from determinePacmanCacheDirectory --- src/Pacserver/Pacserver.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Pacserver/Pacserver.cs b/src/Pacserver/Pacserver.cs index d8c5366..68d1d1d 100644 --- a/src/Pacserver/Pacserver.cs +++ b/src/Pacserver/Pacserver.cs @@ -26,6 +26,23 @@ public class PacserverUtils { public static string pacmanDatabaseDirectory { get; set; } = string.Empty; public static string determinePacmanDatabaseDirectory() { + string defaultPacmanDatabaseDirectory = "/var/lib/pacman/"; + + Regex regex = new Regex(@"\/(?:[\w.-]+\/)*[\w.-]+(?:\.\w+)*\/?$"); // https://regex101.com/r/GwWeui/2 + string? line; + StreamReader file = new StreamReader("/etc/pacman.conf"); + while ((line = file.ReadLine()) is not null) { + if (line.Contains("DBPath")) { + Match match = regex.Match(line); + if (match.Success) { + pacmanDatabaseDirectory = match.ToString(); + } else { + throw new Exception("Could not determine where pacman database is! Would normally be found here " + defaultPacmanDatabaseDirectory); + } + } + } + file.Close(); + return pacmanDatabaseDirectory; } From 4f474591da4238af7e333b02d1980d322f0682dd Mon Sep 17 00:00:00 2001 From: ProfessionalUwU Date: Sun, 4 Jun 2023 23:15:16 +0200 Subject: [PATCH 2/2] Add test for determinePacmanDatabaseDirectory --- src/Pacserver.Tests/pacmanDatabase_Test.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/Pacserver.Tests/pacmanDatabase_Test.cs diff --git a/src/Pacserver.Tests/pacmanDatabase_Test.cs b/src/Pacserver.Tests/pacmanDatabase_Test.cs new file mode 100644 index 0000000..8b08cd4 --- /dev/null +++ b/src/Pacserver.Tests/pacmanDatabase_Test.cs @@ -0,0 +1,12 @@ +using Pacserver.Utils; + +namespace Pacserver.Tests; + +public class pacmanDatabase_Test { + [Fact] + public void doesPacmanDatabaseExist() { + string result = PacserverUtils.determinePacmanDatabaseDirectory(); + + Assert.Equivalent(result, "/var/lib/pacman/"); + } +} \ No newline at end of file