aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/CommandLine/BuildCommand.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/CommandLine/BuildCommand.cs')
-rw-r--r--src/WixToolset.Core/CommandLine/BuildCommand.cs68
1 files changed, 55 insertions, 13 deletions
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs
index 4064a23c..072accc3 100644
--- a/src/WixToolset.Core/CommandLine/BuildCommand.cs
+++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs
@@ -549,8 +549,8 @@ namespace WixToolset.Core.CommandLine
549 { 549 {
550 if (parser.IsSwitch(arg)) 550 if (parser.IsSwitch(arg))
551 { 551 {
552 var parameter = arg.Substring(1); 552 var parameter = arg.Substring(1).ToLowerInvariant();
553 switch (parameter.ToLowerInvariant()) 553 switch (parameter)
554 { 554 {
555 case "?": 555 case "?":
556 case "h": 556 case "h":
@@ -583,7 +583,7 @@ namespace WixToolset.Core.CommandLine
583 this.BindPaths.Add(bindPath); 583 this.BindPaths.Add(bindPath);
584 return true; 584 return true;
585 } 585 }
586 break; 586 return false;
587 } 587 }
588 588
589 case "cc": 589 case "cc":
@@ -649,7 +649,7 @@ namespace WixToolset.Core.CommandLine
649 this.PdbType = pdbType; 649 this.PdbType = pdbType;
650 return true; 650 return true;
651 } 651 }
652 break; 652 return false;
653 } 653 }
654 654
655 case "nologo": 655 case "nologo":
@@ -664,16 +664,22 @@ namespace WixToolset.Core.CommandLine
664 case "sval": 664 case "sval":
665 // todo: implement 665 // todo: implement
666 return true; 666 return true;
667 }
667 668
668 case "sw": 669 if (parameter.StartsWith("sw"))
669 case "suppresswarning": 670 {
670 var warning = parser.GetNextArgumentOrError(arg); 671 this.ParseSuppressWarning(parameter, "sw".Length, parser);
671 if (!String.IsNullOrEmpty(warning)) 672 return true;
672 { 673 }
673 var warningNumber = Convert.ToInt32(warning); 674 else if (parameter.StartsWith("suppresswarning"))
674 this.Messaging.SuppressWarningMessage(warningNumber); 675 {
675 } 676 this.ParseSuppressWarning(parameter, "suppresswarning".Length, parser);
676 return true; 677 return true;
678 }
679 else if (parameter.StartsWith("wx"))
680 {
681 this.ParseWarningAsError(parameter, "wx".Length, parser);
682 return true;
677 } 683 }
678 684
679 return false; 685 return false;
@@ -821,6 +827,42 @@ namespace WixToolset.Core.CommandLine
821 827
822 return true; 828 return true;
823 } 829 }
830
831 private void ParseSuppressWarning(string parameter, int offset, ICommandLineParser parser)
832 {
833 var paramArg = parameter.Substring(offset);
834 if (paramArg.Length == 0)
835 {
836 this.Messaging.SuppressAllWarnings = true;
837 }
838 else if (Int32.TryParse(paramArg, out var suppressWarning) && suppressWarning > 0)
839 {
840 this.Messaging.SuppressWarningMessage(suppressWarning);
841 }
842 else
843 {
844 this.Messaging.Write(ErrorMessages.IllegalSuppressWarningId(paramArg));
845 parser.ErrorArgument = parameter;
846 }
847 }
848
849 private void ParseWarningAsError(string parameter, int offset, ICommandLineParser parser)
850 {
851 var paramArg = parameter.Substring(offset);
852 if (paramArg.Length == 0)
853 {
854 this.Messaging.WarningsAsError = true;
855 }
856 else if (Int32.TryParse(paramArg, out var elevateWarning) && elevateWarning > 0)
857 {
858 this.Messaging.SuppressWarningMessage(elevateWarning);
859 }
860 else
861 {
862 this.Messaging.Write(ErrorMessages.IllegalSuppressWarningId(paramArg));
863 parser.ErrorArgument = parameter;
864 }
865 }
824 } 866 }
825 } 867 }
826} 868}