Major changes

Now saving the ouput of the diff to a file in tmp
diff file can be loaded back into pacserver
Rewrote how checkIfDatabasesWereModified works
Slimmed down Program.cs to only have before and after
Add packages and databases into one list for transfer
This commit is contained in:
ProfessionalUwU 2023-06-20 23:07:16 +02:00
parent 15220e7135
commit 58ceb31c1c
Signed by: ProfessionalUwU
GPG Key ID: 9F28CB1645C4BFB5
3 changed files with 64 additions and 64 deletions

View File

@ -10,7 +10,7 @@ public class TranserFilesTest {
// Act // Act
utils.readPacmanConfig(); utils.readPacmanConfig();
utils.transferPacmanCache(); utils.transfer();
// Assert // Assert
//Assert.NotEmpty(Directory.GetFiles("/home/rene/test/")); //Assert.NotEmpty(Directory.GetFiles("/home/rene/test/"));

View File

@ -85,32 +85,52 @@ public class PacserverUtils {
} }
} }
public List<String> databases = new List<String>(); public void saveDiffToFile(string filePath) {
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) {
if (File.Exists(filePath)) { if (File.Exists(filePath)) {
File.Delete(filePath); File.Delete(filePath);
} }
using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { using (File.Open(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) {
using (StreamWriter sw = new StreamWriter(filePath)) { using (StreamWriter sw = new StreamWriter(filePath)) {
sw.WriteLine(database + " " + File.GetLastAccessTime(database)); foreach (string packageOrDatabase in diffOfPackagesOrDatabases) {
sw.WriteLine(packageOrDatabase);
}
}
}
}
public List<String> readDiffFileToList(string filePath) {
using (File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) {
return File.ReadAllLines(filePath).ToList();
}
}
public List<String> databases = new List<String>();
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<String> newerPackagesAndDatabases = new List<String>(); private static List<String> newerPackagesAndDatabases = new List<String>();
public async void transferPacmanCache() { public void combinePackagesWithDatabases() {
newerPackagesAndDatabases.AddRange(packageNamesAndVersion);
newerPackagesAndDatabases.AddRange(databasesToTransfer);
}
public async void transfer() {
HttpClient client = new HttpClient(); HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://192.168.0.69:12000/upload?path=/"); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://192.168.0.69:12000/upload?path=/");
MultipartFormDataContent content = new MultipartFormDataContent(); MultipartFormDataContent content = new MultipartFormDataContent();
@ -135,8 +160,4 @@ public class PacserverUtils {
await client.SendAsync(request); await client.SendAsync(request);
} }
public void transferPacmanDatabases() {
}
} }

View File

@ -6,60 +6,39 @@ public class Program {
Console.ForegroundColor = ConsoleColor.Red; Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Please specify an option."); Console.WriteLine("Please specify an option.");
Console.ResetColor(); Console.ResetColor();
Console.WriteLine("Possible options are: determinePacmanCacheDirectory, packagesBefore, packagesAfter, diffPackages, databasesBefore, databasesAfter, diffDatabases, filter"); Console.WriteLine("Possible options are: before, after");
return; return;
} }
PacserverUtils utils = new PacserverUtils(); PacserverUtils utils = new PacserverUtils();
utils.readPacmanConfig();
switch (args[0]) { switch (args[0]) {
case "determinePacmanCacheDirectory": case "before":
utils.readPacmanConfig();
Console.WriteLine(utils.pacmanCacheDirectory);
break;
case "packagesBefore":
utils.readPacmanConfig();
utils.getEveryPackageNameAndVersion("before", "/tmp/packages_before.txt"); 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"); utils.checkIfDatabasesWereModified("before", "/tmp/databases_before.txt");
break; break;
case "databasesAfter": case "after":
utils.readPacmanConfig(); utils.getEveryPackageNameAndVersion("after", "/tmp/packages_after.txt");
utils.checkIfDatabasesWereModified("after", "/tmp/databases_after.txt"); utils.checkIfDatabasesWereModified("after", "/tmp/databases_after.txt");
break;
case "diffDatabases": utils.diff("/tmp/packages_before.txt", "/tmp/packages_after.txt");
utils.diff("/tmp/databases_before.txt", "/tmp/databases_after.txt"); utils.saveDiffToFile("/tmp/package_diff.txt");
string databases = string.Join("\n", utils.diffOfPackagesOrDatabases);
Console.WriteLine(databases);
break;
case "filter":
utils.diff("/tmp/databases_before.txt", "/tmp/databases_after.txt"); utils.diff("/tmp/databases_before.txt", "/tmp/databases_after.txt");
utils.saveDiffToFile("/tmp/database_diff.txt");
utils.filterDiffOutputForDatabases(); utils.filterDiffOutputForDatabases();
string filteredDatabases = string.Join("\n", utils.databasesToTransfer);
Console.WriteLine(filteredDatabases); utils.packageNamesAndVersion = utils.readDiffFileToList("/tmp/package_diff.txt");
break;
case "getEveryPackageInCache": utils.combinePackagesWithDatabases();
utils.readPacmanConfig(); utils.transfer();
utils.getEveryPackageNameAndVersion("before", "/tmp/packages_before.txt");
string allPackages = string.Join("\n", utils.packageNamesAndVersion);
Console.WriteLine(allPackages);
break; break;
default: default:
Console.ForegroundColor = ConsoleColor.Red; Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(args[0] + " is not a recognized option."); Console.WriteLine(args[0] + " is not a recognized option.");
Console.ResetColor(); Console.ResetColor();
Console.WriteLine("Possible options are: determinePacmanCacheDirectory, packagesBefore, packagesAfter, diffPackages, databasesBefore, databasesAfter, diffDatabases, filter"); Console.WriteLine("Possible options are: before, after");
break; break;
} }
} }