diff options
Diffstat (limited to 'src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs')
-rw-r--r-- | src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs b/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs index 855ce9a9..148acb34 100644 --- a/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs +++ b/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs | |||
@@ -13,6 +13,9 @@ namespace WixToolset.Mba.Core | |||
13 | public class OverridableVariablesInfo : IOverridableVariables | 13 | public class OverridableVariablesInfo : IOverridableVariables |
14 | { | 14 | { |
15 | /// <inheritdoc /> | 15 | /// <inheritdoc /> |
16 | public VariableCommandLineType CommandLineType { get; internal set; } | ||
17 | |||
18 | /// <inheritdoc /> | ||
16 | public IDictionary<string, IOverridableVariableInfo> Variables { get; internal set; } | 19 | public IDictionary<string, IOverridableVariableInfo> Variables { get; internal set; } |
17 | 20 | ||
18 | internal OverridableVariablesInfo() { } | 21 | internal OverridableVariablesInfo() { } |
@@ -26,9 +29,36 @@ namespace WixToolset.Mba.Core | |||
26 | { | 29 | { |
27 | XmlNamespaceManager namespaceManager = new XmlNamespaceManager(root.NameTable); | 30 | XmlNamespaceManager namespaceManager = new XmlNamespaceManager(root.NameTable); |
28 | namespaceManager.AddNamespace("p", BootstrapperApplicationData.XMLNamespace); | 31 | namespaceManager.AddNamespace("p", BootstrapperApplicationData.XMLNamespace); |
32 | XPathNavigator commandLineNode = root.SelectSingleNode("/p:BootstrapperApplicationData/p:CommandLine", namespaceManager); | ||
29 | XPathNodeIterator nodes = root.Select("/p:BootstrapperApplicationData/p:WixStdbaOverridableVariable", namespaceManager); | 33 | XPathNodeIterator nodes = root.Select("/p:BootstrapperApplicationData/p:WixStdbaOverridableVariable", namespaceManager); |
30 | 34 | ||
31 | var overridableVariables = new OverridableVariablesInfo(); | 35 | var overridableVariables = new OverridableVariablesInfo(); |
36 | |||
37 | if (commandLineNode == null) | ||
38 | { | ||
39 | throw new Exception("Failed to select command line information."); | ||
40 | } | ||
41 | |||
42 | string variablesValue = BootstrapperApplicationData.GetAttribute(commandLineNode, "Variables"); | ||
43 | |||
44 | if (variablesValue == null) | ||
45 | { | ||
46 | throw new Exception("Failed to get command line variable type."); | ||
47 | } | ||
48 | |||
49 | if (variablesValue.Equals("upperCase", StringComparison.InvariantCulture)) | ||
50 | { | ||
51 | overridableVariables.CommandLineType = VariableCommandLineType.UpperCase; | ||
52 | } | ||
53 | else if (variablesValue.Equals("caseSensitive", StringComparison.InvariantCulture)) | ||
54 | { | ||
55 | overridableVariables.CommandLineType = VariableCommandLineType.CaseSensitive; | ||
56 | } | ||
57 | else | ||
58 | { | ||
59 | throw new Exception(string.Format("Unknown command line variable type: '{0}'", variablesValue)); | ||
60 | } | ||
61 | |||
32 | overridableVariables.Variables = new Dictionary<string, IOverridableVariableInfo>(); | 62 | overridableVariables.Variables = new Dictionary<string, IOverridableVariableInfo>(); |
33 | 63 | ||
34 | foreach (XPathNavigator node in nodes) | 64 | foreach (XPathNavigator node in nodes) |