From 1d6ff8af3c423ee4622185edc986ae5caad6b122 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 26 Dec 2017 15:11:40 -0800 Subject: Standardize creation of public objects in move towards interfaces --- src/WixToolset.Core/Librarian.cs | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/WixToolset.Core/Librarian.cs') diff --git a/src/WixToolset.Core/Librarian.cs b/src/WixToolset.Core/Librarian.cs index 2efb0f9b..3e843070 100644 --- a/src/WixToolset.Core/Librarian.cs +++ b/src/WixToolset.Core/Librarian.cs @@ -9,27 +9,45 @@ namespace WixToolset.Core using WixToolset.Core.Link; using WixToolset.Data; using WixToolset.Extensibility; + using WixToolset.Extensibility.Services; /// /// Core librarian tool. /// public sealed class Librarian { + public Librarian(IServiceProvider serviceProvider) + { + this.ServiceProvider = serviceProvider; + } + + private IServiceProvider ServiceProvider { get; } + private ILibraryContext Context { get; set; } + public bool BindFiles { get; set; } + + public IEnumerable BindPaths { get; set; } + + public IEnumerable Localizations { get; set; } + + public IEnumerable Intermediates { get; set; } + /// /// Create a library by combining several intermediates (objects). /// /// The sections to combine into a library. /// Returns the new library. - public Intermediate Combine(ILibraryContext context) + public Intermediate Execute() { - this.Context = context ?? throw new ArgumentNullException(nameof(context)); - - if (String.IsNullOrEmpty(this.Context.LibraryId)) - { - this.Context.LibraryId = Convert.ToBase64String(Guid.NewGuid().ToByteArray()).TrimEnd('=').Replace('+', '.').Replace('/', '_'); - } + this.Context = new LibraryContext(this.ServiceProvider); + this.Context.Messaging = this.ServiceProvider.GetService(); + this.Context.BindFiles = this.BindFiles; + this.Context.BindPaths = this.BindPaths; + this.Context.Extensions = this.ServiceProvider.GetService().Create(); + this.Context.Localizations = this.Localizations; + this.Context.LibraryId = Convert.ToBase64String(Guid.NewGuid().ToByteArray()).TrimEnd('=').Replace('+', '.').Replace('/', '_'); + this.Context.Intermediates = this.Intermediates; foreach (var extension in this.Context.Extensions) { -- cgit v1.2.3-55-g6feb