blob: 3399420c5a7ebe78da557f2c232cddf19eac7e8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
namespace WixToolset.Core
{
using System;
using System.Diagnostics.CodeAnalysis;
using WixToolset.Data;
using Wix = WixToolset.Data.Serialize;
/// <summary>
/// The WiX Toolset harvester.
/// </summary>
public class Harvester
{
private HarvesterExtension harvesterExtension;
/// <summary>
/// Gets or sets the harvester core for the extension.
/// </summary>
/// <value>The harvester core for the extension.</value>
public IHarvesterCore Core { get; set; }
/// <summary>
/// Gets or sets the extension.
/// </summary>
/// <value>The extension.</value>
[SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.InvalidOperationException.#ctor(System.String)")]
public HarvesterExtension Extension
{
get
{
return this.harvesterExtension;
}
set
{
if (null != this.harvesterExtension)
{
throw new InvalidOperationException("Multiple harvester extensions specified.");
}
this.harvesterExtension = value;
}
}
/// <summary>
/// Harvest wix authoring.
/// </summary>
/// <param name="argument">The argument for harvesting.</param>
/// <returns>The harvested wix authoring.</returns>
public Wix.Wix Harvest(string argument)
{
if (null == argument)
{
throw new ArgumentNullException("argument");
}
if (null == this.harvesterExtension)
{
throw new WixException(ErrorMessages.HarvestTypeNotFound());
}
this.harvesterExtension.Core = this.Core;
Wix.Fragment[] fragments = this.harvesterExtension.Harvest(argument);
if (null == fragments || 0 == fragments.Length)
{
return null;
}
Wix.Wix wix = new Wix.Wix();
foreach (Wix.Fragment fragment in fragments)
{
wix.AddChild(fragment);
}
return wix;
}
}
}
|