diff --git a/EftPatchHelper/EftPatchHelper/EftPatchHelper.csproj b/EftPatchHelper/EftPatchHelper/EftPatchHelper.csproj
index 5804d1d..b7ceda2 100644
--- a/EftPatchHelper/EftPatchHelper/EftPatchHelper.csproj
+++ b/EftPatchHelper/EftPatchHelper/EftPatchHelper.csproj
@@ -5,8 +5,8 @@
net8.0
enable
enable
- 1.5.6
- 1.5.6
+ 1.5.8
+ 1.5.8
@@ -19,6 +19,7 @@
+
@@ -36,4 +37,9 @@
+
+
+
+
+
diff --git a/EftPatchHelper/EftPatchHelper/Helpers/FileHelper.cs b/EftPatchHelper/EftPatchHelper/Helpers/FileHelper.cs
new file mode 100644
index 0000000..d91af5c
--- /dev/null
+++ b/EftPatchHelper/EftPatchHelper/Helpers/FileHelper.cs
@@ -0,0 +1,44 @@
+using System.Reflection;
+using Spectre.Console;
+
+namespace EftPatchHelper.Helpers;
+
+public class FileHelper
+{
+ public bool StreamAssemblyResourceOut(string resourceName, string outputFilePath)
+ {
+ try
+ {
+ var assembly = Assembly.GetExecutingAssembly();
+
+ FileInfo outputFile = new FileInfo(outputFilePath);
+
+ if (outputFile.Exists)
+ {
+ outputFile.Delete();
+ }
+
+ if (!outputFile.Directory.Exists)
+ {
+ Directory.CreateDirectory(outputFile.Directory.FullName);
+ }
+
+ var resName = assembly.GetManifestResourceNames().First(x => x.EndsWith(resourceName));
+
+ using (FileStream fs = File.Create(outputFilePath))
+ using (Stream s = assembly.GetManifestResourceStream(resName))
+ {
+ s.CopyTo(fs);
+ }
+
+ outputFile.Refresh();
+ return outputFile.Exists;
+ }
+ catch (Exception ex)
+ {
+ AnsiConsole.WriteException(ex);
+ return false;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/EftPatchHelper/EftPatchHelper/Helpers/ZipHelper.cs b/EftPatchHelper/EftPatchHelper/Helpers/ZipHelper.cs
new file mode 100644
index 0000000..664d68c
--- /dev/null
+++ b/EftPatchHelper/EftPatchHelper/Helpers/ZipHelper.cs
@@ -0,0 +1,45 @@
+using SevenZip;
+using Spectre.Console;
+
+namespace EftPatchHelper.Helpers;
+
+public class ZipHelper
+{
+ public string DllPath = Path.Join(Environment.CurrentDirectory, "7z.dll");
+ public bool Compress(DirectoryInfo folder, FileInfo outputArchive,
+ IProgress progress)
+ {
+ try
+ {
+ using var outputStream = outputArchive.OpenWrite();
+
+ SevenZipBase.SetLibraryPath(DllPath);
+
+ var compressor = new SevenZipCompressor()
+ {
+ CompressionLevel = CompressionLevel.Normal,
+ CompressionMethod = CompressionMethod.Lzma2,
+ ArchiveFormat = OutArchiveFormat.SevenZip
+ };
+
+ compressor.Compressing += (_, args) => { progress.Report(args.PercentDone); };
+
+ compressor.CompressDirectory(folder.FullName, outputStream);
+
+ outputArchive.Refresh();
+
+ if (!outputArchive.Exists)
+ {
+ AnsiConsole.MarkupLine("output archive not found");
+ return false;
+ }
+
+ return true;
+ }
+ catch (Exception ex)
+ {
+ AnsiConsole.WriteException(ex);
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/EftPatchHelper/EftPatchHelper/Interfaces/ICompressPatcherTasks.cs b/EftPatchHelper/EftPatchHelper/Interfaces/ICompressPatcherTasks.cs
new file mode 100644
index 0000000..e06b9dd
--- /dev/null
+++ b/EftPatchHelper/EftPatchHelper/Interfaces/ICompressPatcherTasks.cs
@@ -0,0 +1,5 @@
+namespace EftPatchHelper.Interfaces;
+
+public interface ICompressPatcherTasks : ITaskable
+{
+}
\ No newline at end of file
diff --git a/EftPatchHelper/EftPatchHelper/Model/GoFileUpload.cs b/EftPatchHelper/EftPatchHelper/Model/GoFileUpload.cs
index 3ec7941..887480c 100644
--- a/EftPatchHelper/EftPatchHelper/Model/GoFileUpload.cs
+++ b/EftPatchHelper/EftPatchHelper/Model/GoFileUpload.cs
@@ -30,7 +30,7 @@ namespace EftPatchHelper.Model
_folderId = folderId;
UploadFileInfo = file;
ServiceName = "GoFile";
- DisplayName = $"{ServiceName} Upload: {UploadFileInfo.Name}";
+ DisplayName = $"{ServiceName} Upload";
HubEntryText = $"Download from {ServiceName}";
AddHubEntry = true;
}
diff --git a/EftPatchHelper/EftPatchHelper/Model/MegaUpload.cs b/EftPatchHelper/EftPatchHelper/Model/MegaUpload.cs
index 87583d2..2109377 100644
--- a/EftPatchHelper/EftPatchHelper/Model/MegaUpload.cs
+++ b/EftPatchHelper/EftPatchHelper/Model/MegaUpload.cs
@@ -27,7 +27,7 @@ namespace EftPatchHelper.Model
_email = email;
_password = password;
ServiceName = "Mega";
- DisplayName = $"{ServiceName} Upload: {UploadFileInfo.Name}";
+ DisplayName = $"{ServiceName} Upload";
HubEntryText = $"Download from {ServiceName}";
AddHubEntry = true;
}
diff --git a/EftPatchHelper/EftPatchHelper/Model/SftpUpload.cs b/EftPatchHelper/EftPatchHelper/Model/SftpUpload.cs
index 696716f..5e063da 100644
--- a/EftPatchHelper/EftPatchHelper/Model/SftpUpload.cs
+++ b/EftPatchHelper/EftPatchHelper/Model/SftpUpload.cs
@@ -30,7 +30,7 @@ public class SftpUpload : IFileUpload
};
ServiceName = _sftpInfo.Hostname;
- DisplayName = $"{ServiceName} Upload: {UploadFileInfo.Name}";
+ DisplayName = $"{ServiceName} Upload";
HubEntryText = $"Download from {ServiceName}";
AddHubEntry = false;
}
diff --git a/EftPatchHelper/EftPatchHelper/Program.cs b/EftPatchHelper/EftPatchHelper/Program.cs
index 2c4aac3..0df99de 100644
--- a/EftPatchHelper/EftPatchHelper/Program.cs
+++ b/EftPatchHelper/EftPatchHelper/Program.cs
@@ -20,6 +20,7 @@ namespace EftPatchHelper
ITaskable _fileProcessingTasks;
ITaskable _patchGenTasks;
ITaskable _patchTestingTasks;
+ private ITaskable _compressPatcherTasks;
ITaskable _createReleaseTasks;
ITaskable _uploadTasks;
@@ -45,6 +46,7 @@ namespace EftPatchHelper
IFileProcessingTasks fileProcessingTasks,
IPatchGenTasks patchGenTasks,
IPatchTestingTasks patchTestingTasks,
+ ICompressPatcherTasks compressPatcherTasks,
IUploadTasks uploadTasks,
IReleaseCreator createReleaseTasks
)
@@ -55,6 +57,7 @@ namespace EftPatchHelper
_fileProcessingTasks = fileProcessingTasks;
_patchGenTasks = patchGenTasks;
_patchTestingTasks = patchTestingTasks;
+ _compressPatcherTasks = compressPatcherTasks;
_createReleaseTasks = createReleaseTasks;
_uploadTasks = uploadTasks;
}
@@ -67,6 +70,7 @@ namespace EftPatchHelper
_fileProcessingTasks.Run();
_patchGenTasks.Run();
_patchTestingTasks.Run();
+ _compressPatcherTasks.Run();
_uploadTasks.Run();
_createReleaseTasks.Run();
}
@@ -84,6 +88,9 @@ namespace EftPatchHelper
return settings;
});
+ services.AddSingleton();
+ services.AddSingleton();
+
services.AddScoped();
services.AddTransient();
@@ -92,6 +99,7 @@ namespace EftPatchHelper
services.AddTransient();
services.AddTransient();
services.AddTransient();
+ services.AddTransient();
services.AddTransient();
services.AddTransient();
services.AddTransient();
diff --git a/EftPatchHelper/EftPatchHelper/Resources/7z.dll b/EftPatchHelper/EftPatchHelper/Resources/7z.dll
new file mode 100644
index 0000000..2ba9f27
Binary files /dev/null and b/EftPatchHelper/EftPatchHelper/Resources/7z.dll differ
diff --git a/EftPatchHelper/EftPatchHelper/Tasks/CompressPatcherTasks.cs b/EftPatchHelper/EftPatchHelper/Tasks/CompressPatcherTasks.cs
new file mode 100644
index 0000000..b4b1ab3
--- /dev/null
+++ b/EftPatchHelper/EftPatchHelper/Tasks/CompressPatcherTasks.cs
@@ -0,0 +1,63 @@
+using EftPatchHelper.Extensions;
+using EftPatchHelper.Helpers;
+using EftPatchHelper.Interfaces;
+using EftPatchHelper.Model;
+using Spectre.Console;
+
+namespace EftPatchHelper.Tasks;
+
+public class CompressPatcherTasks : ICompressPatcherTasks
+{
+ private Options _options;
+ private FileHelper _fileHelper;
+ private ZipHelper _zipHelper;
+
+ public CompressPatcherTasks(Options options, FileHelper fileHelper, ZipHelper zipHelper)
+ {
+ _options = options;
+ _fileHelper = fileHelper;
+ _zipHelper = zipHelper;
+ }
+
+ public bool CompressPatcher()
+ {
+ return AnsiConsole.Progress()
+ .Columns(new ProgressColumn[]
+ {
+ new TaskDescriptionColumn(),
+ new ProgressBarColumn(),
+ new PercentageColumn(),
+ new ElapsedTimeColumn(),
+ new SpinnerColumn(Spinner.Known.Dots2)
+ })
+ .Start(ctx =>
+ {
+
+ var compressionTask = ctx.AddTask("Compressing Patcher");
+ compressionTask.MaxValue = 100;
+
+ if (!_fileHelper.StreamAssemblyResourceOut("7z.dll", _zipHelper.DllPath))
+ {
+ return false;
+ }
+
+ var patchFolder = new DirectoryInfo(_options.OutputPatchPath);
+
+ var patchArchiveFile = new FileInfo(_options.OutputPatchPath + ".7z");
+
+ if (!patchFolder.Exists)
+ {
+ return false;
+ }
+
+ var progress = new Progress(p => { compressionTask.Increment(p - compressionTask.Percentage);});
+
+ return _zipHelper.Compress(patchFolder, patchArchiveFile, progress);
+ });
+ }
+
+ public void Run()
+ {
+ CompressPatcher().ValidateOrExit();
+ }
+}
\ No newline at end of file
diff --git a/EftPatchHelper/EftPatchHelper/Tasks/PatchGenTasks.cs b/EftPatchHelper/EftPatchHelper/Tasks/PatchGenTasks.cs
index 250904d..87ab931 100644
--- a/EftPatchHelper/EftPatchHelper/Tasks/PatchGenTasks.cs
+++ b/EftPatchHelper/EftPatchHelper/Tasks/PatchGenTasks.cs
@@ -48,7 +48,7 @@ namespace EftPatchHelper.Tasks
$"OutputFolderName::{patcherOutputName}",
$"SourceFolderPath::{_options.SourceClient.PrepPath}",
$"TargetFolderPath::{_options.TargetClient.PrepPath}",
- $"AutoZip::{_settings.AutoZip}",
+ $"AutoZip::false",
$"AutoClose::{_settings.AutoClose}"
}
});
diff --git a/EftPatchHelper/EftPatchHelper/Tasks/UploadTasks.cs b/EftPatchHelper/EftPatchHelper/Tasks/UploadTasks.cs
index 04ca816..fae6559 100644
--- a/EftPatchHelper/EftPatchHelper/Tasks/UploadTasks.cs
+++ b/EftPatchHelper/EftPatchHelper/Tasks/UploadTasks.cs
@@ -45,7 +45,7 @@ namespace EftPatchHelper.Tasks
{
var gofile = new GoFileUpload(patcherFile, _settings.GoFileApiKey, _settings.GoFileFolderId);
_fileUploads.Add(gofile);
- AnsiConsole.WriteLine("Added MEGA");
+ AnsiConsole.WriteLine("Added GoFile");
}
if (_settings.SftpUploads.Count > 0 && _options.UploadToSftpSites)
@@ -134,6 +134,8 @@ namespace EftPatchHelper.Tasks
{
return false;
}
+
+ AnsiConsole.MarkupLine($"[blue]Starting {_fileUploads[0].UploadFileInfo.Name} uploads ...[/]");
var succeeded = await AnsiConsole.Progress().Columns(
new TaskDescriptionColumn() { Alignment = Justify.Left},