diff --git a/src/Pacserver.Tests/TransferFilesTest.cs b/src/Pacserver.Tests/TransferFilesTest.cs index 4de7999..baee83e 100644 --- a/src/Pacserver.Tests/TransferFilesTest.cs +++ b/src/Pacserver.Tests/TransferFilesTest.cs @@ -10,7 +10,7 @@ public class TranserFilesTest { // Act utils.readPacmanConfig(); - utils.transferPacmanCache(); + utils.transfer(); // Assert //Assert.NotEmpty(Directory.GetFiles("/home/rene/test/")); diff --git a/src/Pacserver/Pacserver.cs b/src/Pacserver/Pacserver.cs index e3a0fac..1df5492 100644 --- a/src/Pacserver/Pacserver.cs +++ b/src/Pacserver/Pacserver.cs @@ -66,7 +66,7 @@ public class PacserverUtils { if (File.Exists(filePath)) { File.Delete(filePath); } - + using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { using (StreamWriter sw = new StreamWriter(filePath)) { foreach (string package in packageNamesAndVersion) { @@ -85,32 +85,52 @@ public class PacserverUtils { } } - public List databases = new List(); - public void checkIfDatabasesWereModified(string mode, string filePath) { - string[] databases = Directory.GetFiles(pacmanDatabaseDirectory + "sync/"); - - foreach (string database in databases) { - switch (mode) { - case "before": - writeDatabaseAccessTimeToFile(filePath, database); - break; - case "after": - writeDatabaseAccessTimeToFile(filePath, database); - break; - default: - throw new ArgumentException("No valid mode was given. Valid modes are before and after"); - } - } - } - - public void writeDatabaseAccessTimeToFile(string filePath, string database) { + public void saveDiffToFile(string filePath) { if (File.Exists(filePath)) { File.Delete(filePath); } using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { using (StreamWriter sw = new StreamWriter(filePath)) { - sw.WriteLine(database + " " + File.GetLastAccessTime(database)); + foreach (string packageOrDatabase in diffOfPackagesOrDatabases) { + sw.WriteLine(packageOrDatabase); + } + } + } + } + + public List readDiffFileToList(string filePath) { + using (File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { + return File.ReadAllLines(filePath).ToList(); + } + } + + public List databases = new List(); + public void checkIfDatabasesWereModified(string mode, string filePath) { + databases = Directory.GetFiles(pacmanDatabaseDirectory + "sync/").ToList(); + + switch (mode) { + case "before": + writeDatabaseAccessTimeToFile(filePath); + break; + case "after": + writeDatabaseAccessTimeToFile(filePath); + break; + default: + throw new ArgumentException("No valid mode was given. Valid modes are before and after"); + } + } + + public void writeDatabaseAccessTimeToFile(string filePath) { + if (File.Exists(filePath)) { + File.Delete(filePath); + } + + using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read)) { + using (StreamWriter sw = new StreamWriter(filePath)) { + foreach (string database in databases) { + sw.WriteLine(database + " " + File.GetLastAccessTime(database)); + } } } } @@ -123,7 +143,12 @@ public class PacserverUtils { } private static List newerPackagesAndDatabases = new List(); - public async void transferPacmanCache() { + public void combinePackagesWithDatabases() { + newerPackagesAndDatabases.AddRange(packageNamesAndVersion); + newerPackagesAndDatabases.AddRange(databasesToTransfer); + } + + public async void transfer() { HttpClient client = new HttpClient(); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://192.168.0.69:12000/upload?path=/"); MultipartFormDataContent content = new MultipartFormDataContent(); @@ -135,8 +160,4 @@ public class PacserverUtils { await client.SendAsync(request); } - - public void transferPacmanDatabases() { - - } } \ No newline at end of file diff --git a/src/Pacserver/Program.cs b/src/Pacserver/Program.cs index 6ca619d..815643d 100644 --- a/src/Pacserver/Program.cs +++ b/src/Pacserver/Program.cs @@ -6,60 +6,39 @@ 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, filter"); + Console.WriteLine("Possible options are: before, after"); return; } PacserverUtils utils = new PacserverUtils(); + utils.readPacmanConfig(); switch (args[0]) { - case "determinePacmanCacheDirectory": - utils.readPacmanConfig(); - Console.WriteLine(utils.pacmanCacheDirectory); - break; - case "packagesBefore": - utils.readPacmanConfig(); + case "before": utils.getEveryPackageNameAndVersion("before", "/tmp/packages_before.txt"); - break; - case "packagesAfter": - utils.readPacmanConfig(); - utils.getEveryPackageNameAndVersion("after", "/tmp/packages_after.txt"); - break; - case "diffPackages": - utils.diff("/tmp/packages_before.txt", "/tmp/packages_after.txt"); - string packages = string.Join("\n", utils.diffOfPackagesOrDatabases); - Console.WriteLine(packages); - break; - case "databasesBefore": - utils.readPacmanConfig(); utils.checkIfDatabasesWereModified("before", "/tmp/databases_before.txt"); break; - case "databasesAfter": - utils.readPacmanConfig(); + case "after": + utils.getEveryPackageNameAndVersion("after", "/tmp/packages_after.txt"); utils.checkIfDatabasesWereModified("after", "/tmp/databases_after.txt"); - break; - case "diffDatabases": - utils.diff("/tmp/databases_before.txt", "/tmp/databases_after.txt"); - string databases = string.Join("\n", utils.diffOfPackagesOrDatabases); - Console.WriteLine(databases); - break; - case "filter": + + utils.diff("/tmp/packages_before.txt", "/tmp/packages_after.txt"); + utils.saveDiffToFile("/tmp/package_diff.txt"); + utils.diff("/tmp/databases_before.txt", "/tmp/databases_after.txt"); + utils.saveDiffToFile("/tmp/database_diff.txt"); utils.filterDiffOutputForDatabases(); - string filteredDatabases = string.Join("\n", utils.databasesToTransfer); - Console.WriteLine(filteredDatabases); - break; - case "getEveryPackageInCache": - utils.readPacmanConfig(); - utils.getEveryPackageNameAndVersion("before", "/tmp/packages_before.txt"); - string allPackages = string.Join("\n", utils.packageNamesAndVersion); - Console.WriteLine(allPackages); + + utils.packageNamesAndVersion = utils.readDiffFileToList("/tmp/package_diff.txt"); + + utils.combinePackagesWithDatabases(); + utils.transfer(); break; default: Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(args[0] + " is not a recognized option."); Console.ResetColor(); - Console.WriteLine("Possible options are: determinePacmanCacheDirectory, packagesBefore, packagesAfter, diffPackages, databasesBefore, databasesAfter, diffDatabases, filter"); + Console.WriteLine("Possible options are: before, after"); break; } }