aboutsummaryrefslogtreecommitdiff
path: root/src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs')
-rw-r--r--src/api/burn/WixToolset.Mba.Core/OverridableVariables.cs30
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)