From 5c8132875cbbbc5ca9ddcc245a09908efae7b66f Mon Sep 17 00:00:00 2001 From: Tomas Prokop Date: Fri, 12 Jun 2026 11:23:48 +0200 Subject: [PATCH] refactor: use TALXIS.Platform.Metadata.Packaging for solution flows Replace the local SolutionPackager wrapper with TALXIS.Platform.Metadata.Packaging 0.7.0 in CLI pack, unpack, import, and export paths. - remove the local ISolutionPackagerService contract and implementation - register the shared packaging service from the package - update CLI commands and export service to use the package API - keep TALXIS.Platform.Metadata.Serialization.Xml alongside the new packaging reference in Features.Environment Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../Dataverse/ISolutionPackagerService.cs | 11 ----- .../Solution/SolutionImportCliCommand.cs | 1 + .../Solution/SolutionPackCliCommand.cs | 2 +- .../Solution/SolutionUnpackCliCommand.cs | 2 +- .../TALXIS.CLI.Features.Environment.csproj | 1 + ...eApplicationServiceCollectionExtensions.cs | 3 +- .../Sdk/SolutionPackagerService.cs | 49 ------------------- .../DataverseSolutionExportService.cs | 1 + ....CLI.Platform.Dataverse.Application.csproj | 10 +--- 9 files changed, 8 insertions(+), 72 deletions(-) delete mode 100644 src/TALXIS.CLI.Core/Contracts/Dataverse/ISolutionPackagerService.cs delete mode 100644 src/TALXIS.CLI.Platform.Dataverse.Application/Sdk/SolutionPackagerService.cs diff --git a/src/TALXIS.CLI.Core/Contracts/Dataverse/ISolutionPackagerService.cs b/src/TALXIS.CLI.Core/Contracts/Dataverse/ISolutionPackagerService.cs deleted file mode 100644 index 61e03d1d..00000000 --- a/src/TALXIS.CLI.Core/Contracts/Dataverse/ISolutionPackagerService.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace TALXIS.CLI.Core.Contracts.Dataverse; - -/// -/// Packs and unpacks Dataverse solution ZIPs using SolutionPackager. -/// No Dataverse connection required — operates on local files only. -/// -public interface ISolutionPackagerService -{ - void Pack(string folder, string zipPath, bool managed); - void Unpack(string zipPath, string outputFolder, bool managed); -} diff --git a/src/TALXIS.CLI.Features.Environment/Solution/SolutionImportCliCommand.cs b/src/TALXIS.CLI.Features.Environment/Solution/SolutionImportCliCommand.cs index b2288b13..0d7d9096 100644 --- a/src/TALXIS.CLI.Features.Environment/Solution/SolutionImportCliCommand.cs +++ b/src/TALXIS.CLI.Features.Environment/Solution/SolutionImportCliCommand.cs @@ -7,6 +7,7 @@ using TALXIS.CLI.Core.DependencyInjection; using TALXIS.CLI.Core.Resolution; using TALXIS.CLI.Logging; +using TALXIS.Platform.Metadata.Packaging; namespace TALXIS.CLI.Features.Environment.Solution; diff --git a/src/TALXIS.CLI.Features.Environment/Solution/SolutionPackCliCommand.cs b/src/TALXIS.CLI.Features.Environment/Solution/SolutionPackCliCommand.cs index 1614dcfe..7e49f12f 100644 --- a/src/TALXIS.CLI.Features.Environment/Solution/SolutionPackCliCommand.cs +++ b/src/TALXIS.CLI.Features.Environment/Solution/SolutionPackCliCommand.cs @@ -1,9 +1,9 @@ using DotMake.CommandLine; using Microsoft.Extensions.Logging; using TALXIS.CLI.Core; -using TALXIS.CLI.Core.Contracts.Dataverse; using TALXIS.CLI.Core.DependencyInjection; using TALXIS.CLI.Logging; +using TALXIS.Platform.Metadata.Packaging; namespace TALXIS.CLI.Features.Environment.Solution; diff --git a/src/TALXIS.CLI.Features.Environment/Solution/SolutionUnpackCliCommand.cs b/src/TALXIS.CLI.Features.Environment/Solution/SolutionUnpackCliCommand.cs index 603a3ff8..42eac262 100644 --- a/src/TALXIS.CLI.Features.Environment/Solution/SolutionUnpackCliCommand.cs +++ b/src/TALXIS.CLI.Features.Environment/Solution/SolutionUnpackCliCommand.cs @@ -1,9 +1,9 @@ using DotMake.CommandLine; using Microsoft.Extensions.Logging; using TALXIS.CLI.Core; -using TALXIS.CLI.Core.Contracts.Dataverse; using TALXIS.CLI.Core.DependencyInjection; using TALXIS.CLI.Logging; +using TALXIS.Platform.Metadata.Packaging; namespace TALXIS.CLI.Features.Environment.Solution; diff --git a/src/TALXIS.CLI.Features.Environment/TALXIS.CLI.Features.Environment.csproj b/src/TALXIS.CLI.Features.Environment/TALXIS.CLI.Features.Environment.csproj index 755814f9..0fcb9bb3 100644 --- a/src/TALXIS.CLI.Features.Environment/TALXIS.CLI.Features.Environment.csproj +++ b/src/TALXIS.CLI.Features.Environment/TALXIS.CLI.Features.Environment.csproj @@ -9,6 +9,7 @@ + diff --git a/src/TALXIS.CLI.Platform.Dataverse.Application/DependencyInjection/DataverseApplicationServiceCollectionExtensions.cs b/src/TALXIS.CLI.Platform.Dataverse.Application/DependencyInjection/DataverseApplicationServiceCollectionExtensions.cs index 5731793c..ed0a3cee 100644 --- a/src/TALXIS.CLI.Platform.Dataverse.Application/DependencyInjection/DataverseApplicationServiceCollectionExtensions.cs +++ b/src/TALXIS.CLI.Platform.Dataverse.Application/DependencyInjection/DataverseApplicationServiceCollectionExtensions.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.DependencyInjection; using TALXIS.CLI.Core.Contracts.Dataverse; using TALXIS.CLI.Platform.Dataverse.Application.Services; +using TALXIS.Platform.Metadata.Packaging; namespace TALXIS.CLI.Platform.Dataverse.Application.DependencyInjection; @@ -34,7 +35,7 @@ public static IServiceCollection AddTxcDataverseApplication(this IServiceCollect services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); return services; } diff --git a/src/TALXIS.CLI.Platform.Dataverse.Application/Sdk/SolutionPackagerService.cs b/src/TALXIS.CLI.Platform.Dataverse.Application/Sdk/SolutionPackagerService.cs deleted file mode 100644 index 601557c2..00000000 --- a/src/TALXIS.CLI.Platform.Dataverse.Application/Sdk/SolutionPackagerService.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System.Diagnostics; -using Microsoft.Crm.Tools.SolutionPackager; -using TALXIS.CLI.Core.Contracts.Dataverse; - -namespace TALXIS.CLI.Platform.Dataverse.Application.Sdk; - -/// -/// Wraps SolutionPackagerLib for packing and unpacking Dataverse solution ZIPs. -/// -internal sealed class SolutionPackagerServiceImpl : ISolutionPackagerService -{ - /// - /// Unpacks a solution ZIP file into a folder structure. - /// - public void Unpack(string zipPath, string outputFolder, bool managed) - { - var arguments = new PackagerArguments - { - Action = CommandAction.Extract, - PathToZipFile = zipPath, - Folder = outputFolder, - PackageType = managed ? SolutionPackageType.Managed : SolutionPackageType.Unmanaged, - AllowDeletes = AllowDelete.Yes, - AllowWrites = AllowWrite.Yes, - ErrorLevel = TraceLevel.Info, - }; - - var packager = new SolutionPackager(arguments); - packager.Run(); - } - - /// - /// Packs a folder structure into a solution ZIP file. - /// - public void Pack(string folder, string zipPath, bool managed) - { - var arguments = new PackagerArguments - { - Action = CommandAction.Pack, - PathToZipFile = zipPath, - Folder = folder, - PackageType = managed ? SolutionPackageType.Managed : SolutionPackageType.Unmanaged, - ErrorLevel = TraceLevel.Info, - }; - - var packager = new SolutionPackager(arguments); - packager.Run(); - } -} diff --git a/src/TALXIS.CLI.Platform.Dataverse.Application/Services/DataverseSolutionExportService.cs b/src/TALXIS.CLI.Platform.Dataverse.Application/Services/DataverseSolutionExportService.cs index d4c966fd..119c80b8 100644 --- a/src/TALXIS.CLI.Platform.Dataverse.Application/Services/DataverseSolutionExportService.cs +++ b/src/TALXIS.CLI.Platform.Dataverse.Application/Services/DataverseSolutionExportService.cs @@ -1,6 +1,7 @@ using TALXIS.CLI.Core.Contracts.Dataverse; using TALXIS.CLI.Platform.Dataverse.Application.Sdk; using TALXIS.CLI.Platform.Dataverse.Runtime; +using TALXIS.Platform.Metadata.Packaging; namespace TALXIS.CLI.Platform.Dataverse.Application.Services; diff --git a/src/TALXIS.CLI.Platform.Dataverse.Application/TALXIS.CLI.Platform.Dataverse.Application.csproj b/src/TALXIS.CLI.Platform.Dataverse.Application/TALXIS.CLI.Platform.Dataverse.Application.csproj index cc49bfe0..52877647 100644 --- a/src/TALXIS.CLI.Platform.Dataverse.Application/TALXIS.CLI.Platform.Dataverse.Application.csproj +++ b/src/TALXIS.CLI.Platform.Dataverse.Application/TALXIS.CLI.Platform.Dataverse.Application.csproj @@ -9,15 +9,7 @@ - - - - - - - $(PkgMicrosoft_PowerApps_CLI_Core_linux-x64)\tools\SolutionPackagerLib.dll - true - +