diff options
Diffstat (limited to 'src/WixToolset.Core/CommandLine/BuildCommand.cs')
-rw-r--r-- | src/WixToolset.Core/CommandLine/BuildCommand.cs | 68 |
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 | } |