diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-01-02 19:00:16 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-01-03 15:49:32 -0600 |
| commit | b673734cce44dd28c1d4d1810da3069324466166 (patch) | |
| tree | ada7f6d994a1dbcf09e8b30b95f7b2c403a0a7f6 /src/WixToolset.Core/CommandLine | |
| parent | 643a5c5db1da6fb68fdc353bbbdbecaa1964425e (diff) | |
| download | wix-b673734cce44dd28c1d4d1810da3069324466166.tar.gz wix-b673734cce44dd28c1d4d1810da3069324466166.tar.bz2 wix-b673734cce44dd28c1d4d1810da3069324466166.zip | |
Implement command line for SuppressAllWarnings and WarningsAsError.
Make WixRunner.Execute default to setting WarningsAsError to make sure tests are not accidentally causing warnings.
Diffstat (limited to 'src/WixToolset.Core/CommandLine')
| -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 | } |
