diff --git a/.gitignore b/.gitignore index e68f0aa..f73905c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .vscode/ -obj/ -bin/ +[Oo]bj/ +[Bb]in/ diff --git a/Program.cs b/Program.cs deleted file mode 100644 index 2fe89ff..0000000 --- a/Program.cs +++ /dev/null @@ -1,16 +0,0 @@ -public class Program { - static void Main(string[] args) { - if (args.Length == 0) { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("Please specify an option."); - Console.ResetColor(); - } else { - switch (args[0]) { - case "": - break; - default: - break; - } - } - } -} \ No newline at end of file diff --git a/justfile b/justfile new file mode 100644 index 0000000..86a9303 --- /dev/null +++ b/justfile @@ -0,0 +1,19 @@ +default: + @just --list + +run: + @dotnet run + +build: + @dotnet build src/Pacserver/pacserver.csproj + @dotnet build src/Pacserver.Tests/Pacserver.Tests.csproj + +publish: format + @dotnet publish --configuration Release src/Pacserver/pacserver.csproj + +format: + @dotnet format src/Pacserver + @dotnet format src/Pacserver.Tests + +test: build + @dotnet test src/Pacserver.Tests diff --git a/pacserver.cs b/pacserver.cs deleted file mode 100644 index da563c9..0000000 --- a/pacserver.cs +++ /dev/null @@ -1,23 +0,0 @@ -public class Pacserver { - public static string pacmanCacheDirectory { get; set; } = string.Empty; - public static string determinePacmanCacheDirectory() { - return pacmanCacheDirectory; - } - - public static string pacmanDatabaseDirectory { get; set; } = string.Empty; - public static string determinePacmanDatabaseDirectory() { - return pacmanDatabaseDirectory; - } - - public static void checkForNewerPackagesAndDatabases() { - - } - - public static void transferPacmanCache() { - - } - - public static void transferPacmanDatabases() { - - } -} \ No newline at end of file diff --git a/src/Pacserver.Tests/Pacserver.Tests.csproj b/src/Pacserver.Tests/Pacserver.Tests.csproj new file mode 100644 index 0000000..01cafe4 --- /dev/null +++ b/src/Pacserver.Tests/Pacserver.Tests.csproj @@ -0,0 +1,28 @@ + + + + net7.0 + enable + enable + linux-x64 + false + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + diff --git a/src/Pacserver.Tests/Usings.cs b/src/Pacserver.Tests/Usings.cs new file mode 100644 index 0000000..8c927eb --- /dev/null +++ b/src/Pacserver.Tests/Usings.cs @@ -0,0 +1 @@ +global using Xunit; \ No newline at end of file diff --git a/src/Pacserver.Tests/pacmanCache_Test.cs b/src/Pacserver.Tests/pacmanCache_Test.cs new file mode 100644 index 0000000..9305fd5 --- /dev/null +++ b/src/Pacserver.Tests/pacmanCache_Test.cs @@ -0,0 +1,13 @@ +using Pacserver.Utils; + +namespace Pacserver.Tests; + +public class pacmanCache_Test { + [Fact] + public void doesPacmanCacheExist() { + string result = PacserverUtils.determinePacmanCacheDirectory(); + + Assert.Equivalent(result, "/var/cache/pacman/pkg/"); + } +} + diff --git a/src/Pacserver/Pacserver.cs b/src/Pacserver/Pacserver.cs new file mode 100644 index 0000000..d8c5366 --- /dev/null +++ b/src/Pacserver/Pacserver.cs @@ -0,0 +1,43 @@ +using System.Text.RegularExpressions; + +namespace Pacserver.Utils; +public class PacserverUtils { + public static string pacmanCacheDirectory { get; set; } = string.Empty; + public static string determinePacmanCacheDirectory() { + string defaultPacmanCacheDirectory = "/var/cache/pacman/pkg/"; + + 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("CacheDir")) { + Match match = regex.Match(line); + if (match.Success) { + pacmanCacheDirectory = match.ToString(); + } else { + throw new Exception("Could not determine where pacman cache is! Would normally be found here " + defaultPacmanCacheDirectory); + } + } + } + file.Close(); + + return pacmanCacheDirectory; + } + + public static string pacmanDatabaseDirectory { get; set; } = string.Empty; + public static string determinePacmanDatabaseDirectory() { + return pacmanDatabaseDirectory; + } + + public static void checkForNewerPackagesAndDatabases() { + + } + + public static void transferPacmanCache() { + + } + + public static void transferPacmanDatabases() { + + } +} \ No newline at end of file diff --git a/src/Pacserver/Program.cs b/src/Pacserver/Program.cs new file mode 100644 index 0000000..3acc3ca --- /dev/null +++ b/src/Pacserver/Program.cs @@ -0,0 +1,22 @@ +using Pacserver.Utils; + +public class Program { + static void Main(string[] args) { + if (args.Length == 0) { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("Please specify an option."); + Console.ResetColor(); + } else { + switch (args[0]) { + case "determinePacmanCacheDirectory": + Console.WriteLine(PacserverUtils.determinePacmanCacheDirectory()); + break; + default: + Console.ForegroundColor = ConsoleColor.Yellow; + Console.WriteLine("Possible options are: determinePacmanCacheDirectory"); + Console.ResetColor(); + break; + } + } + } +} \ No newline at end of file diff --git a/pacserver.csproj b/src/Pacserver/pacserver.csproj similarity index 100% rename from pacserver.csproj rename to src/Pacserver/pacserver.csproj diff --git a/src/pacserver.sln b/src/pacserver.sln new file mode 100644 index 0000000..1c83224 --- /dev/null +++ b/src/pacserver.sln @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pacserver", "Pacserver\pacserver.csproj", "{2B605458-AFBE-4A78-B4EA-9562C82BC932}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pacserver.Tests", "Pacserver.Tests\Pacserver.Tests.csproj", "{0B504958-E66D-4E32-AB22-19F94713AFCD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6FCF1241-CE3C-4A4A-8625-866A4E8E7623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6FCF1241-CE3C-4A4A-8625-866A4E8E7623}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6FCF1241-CE3C-4A4A-8625-866A4E8E7623}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FCF1241-CE3C-4A4A-8625-866A4E8E7623}.Release|Any CPU.Build.0 = Release|Any CPU + {2B605458-AFBE-4A78-B4EA-9562C82BC932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2B605458-AFBE-4A78-B4EA-9562C82BC932}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B605458-AFBE-4A78-B4EA-9562C82BC932}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2B605458-AFBE-4A78-B4EA-9562C82BC932}.Release|Any CPU.Build.0 = Release|Any CPU + {0B504958-E66D-4E32-AB22-19F94713AFCD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0B504958-E66D-4E32-AB22-19F94713AFCD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0B504958-E66D-4E32-AB22-19F94713AFCD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0B504958-E66D-4E32-AB22-19F94713AFCD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal