diff options
author | Rob Mensching <rob@firegiant.com> | 2022-08-11 17:40:06 -0700 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-08-15 06:49:36 -0700 |
commit | a6f8b6fa3903d846cdc2fbe715ca951d83af3107 (patch) | |
tree | e1c554fc6c386c5dc881d288661aa0d1ba0a84a4 /src/api | |
parent | 4a21abbfc4d3b18bda3547a6c792be9f21df356e (diff) | |
download | wix-a6f8b6fa3903d846cdc2fbe715ca951d83af3107.tar.gz wix-a6f8b6fa3903d846cdc2fbe715ca951d83af3107.tar.bz2 wix-a6f8b6fa3903d846cdc2fbe715ca951d83af3107.zip |
Redesign command-line help to meet the needs of WiX v4
Diffstat (limited to 'src/api')
8 files changed, 183 insertions, 34 deletions
diff --git a/src/api/wix/WixToolset.Extensibility/BaseCommandLineCommand.cs b/src/api/wix/WixToolset.Extensibility/BaseCommandLineCommand.cs new file mode 100644 index 00000000..69a4f49f --- /dev/null +++ b/src/api/wix/WixToolset.Extensibility/BaseCommandLineCommand.cs | |||
@@ -0,0 +1,40 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Extensibility | ||
4 | { | ||
5 | using System.Threading; | ||
6 | using System.Threading.Tasks; | ||
7 | using WixToolset.Extensibility.Data; | ||
8 | using WixToolset.Extensibility.Services; | ||
9 | |||
10 | /// <summary> | ||
11 | /// Base class for a command-line command. | ||
12 | /// </summary> | ||
13 | public abstract class BaseCommandLineCommand : ICommandLineCommand | ||
14 | { | ||
15 | /// <summary> | ||
16 | /// See <see cref="ICommandLineCommand.ShowLogo" /> | ||
17 | /// </summary> | ||
18 | public virtual bool ShowLogo => false; | ||
19 | |||
20 | /// <summary> | ||
21 | /// See <see cref="ICommandLineCommand.StopParsing" /> | ||
22 | /// </summary> | ||
23 | public bool StopParsing { get; protected set; } | ||
24 | |||
25 | /// <summary> | ||
26 | /// See <see cref="ICommandLineCommand.ExecuteAsync" /> | ||
27 | /// </summary> | ||
28 | public abstract Task<int> ExecuteAsync(CancellationToken cancellationToken); | ||
29 | |||
30 | /// <summary> | ||
31 | /// See <see cref="ICommandLineCommand.GetCommandLineHelp" /> | ||
32 | /// </summary> | ||
33 | public abstract CommandLineHelp GetCommandLineHelp(); | ||
34 | |||
35 | /// <summary> | ||
36 | /// See <see cref="ICommandLineCommand.TryParseArgument" /> | ||
37 | /// </summary> | ||
38 | public abstract bool TryParseArgument(ICommandLineParser parser, string argument); | ||
39 | } | ||
40 | } | ||
diff --git a/src/api/wix/WixToolset.Extensibility/BaseExtensionCommandLine.cs b/src/api/wix/WixToolset.Extensibility/BaseExtensionCommandLine.cs index c716ac7e..2690788b 100644 --- a/src/api/wix/WixToolset.Extensibility/BaseExtensionCommandLine.cs +++ b/src/api/wix/WixToolset.Extensibility/BaseExtensionCommandLine.cs | |||
@@ -2,8 +2,6 @@ | |||
2 | 2 | ||
3 | namespace WixToolset.Extensibility | 3 | namespace WixToolset.Extensibility |
4 | { | 4 | { |
5 | using System; | ||
6 | using System.Collections.Generic; | ||
7 | using WixToolset.Extensibility.Data; | 5 | using WixToolset.Extensibility.Data; |
8 | using WixToolset.Extensibility.Services; | 6 | using WixToolset.Extensibility.Services; |
9 | 7 | ||
@@ -13,9 +11,12 @@ namespace WixToolset.Extensibility | |||
13 | public abstract class BaseExtensionCommandLine : IExtensionCommandLine | 11 | public abstract class BaseExtensionCommandLine : IExtensionCommandLine |
14 | { | 12 | { |
15 | /// <summary> | 13 | /// <summary> |
16 | /// See <see cref="IExtensionCommandLine.CommandLineSwitches" /> | 14 | /// See <see cref="IExtensionCommandLine.GetCommandLineHelp" /> |
17 | /// </summary> | 15 | /// </summary> |
18 | public virtual IReadOnlyCollection<ExtensionCommandLineSwitch> CommandLineSwitches => Array.Empty<ExtensionCommandLineSwitch>(); | 16 | public virtual CommandLineHelp GetCommandLineHelp() |
17 | { | ||
18 | return null; | ||
19 | } | ||
19 | 20 | ||
20 | /// <summary> | 21 | /// <summary> |
21 | /// See <see cref="IExtensionCommandLine.PostParse" /> | 22 | /// See <see cref="IExtensionCommandLine.PostParse" /> |
diff --git a/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelp.cs b/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelp.cs new file mode 100644 index 00000000..52291947 --- /dev/null +++ b/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelp.cs | |||
@@ -0,0 +1,52 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Extensibility.Data | ||
4 | { | ||
5 | using System.Collections.Generic; | ||
6 | |||
7 | /// <summary> | ||
8 | /// A command line option (switch or command) description. | ||
9 | /// </summary> | ||
10 | public class CommandLineHelp | ||
11 | { | ||
12 | /// <summary> | ||
13 | /// Creates command line help. | ||
14 | /// </summary> | ||
15 | /// <param name="description">Description for the command line option.</param> | ||
16 | /// <param name="usage">Optional usage for the command line option.</param> | ||
17 | /// <param name="switches">Optional list of switches.</param> | ||
18 | /// <param name="commands">Optional list of commands.</param> | ||
19 | public CommandLineHelp(string description, string usage = null, IReadOnlyCollection<CommandLineHelpSwitch> switches = null, IReadOnlyCollection<CommandLineHelpCommand> commands = null) | ||
20 | { | ||
21 | this.Description = description; | ||
22 | this.Usage = usage; | ||
23 | this.Switches = switches; | ||
24 | this.Commands = commands; | ||
25 | } | ||
26 | |||
27 | /// <summary> | ||
28 | /// Description for the command line option. | ||
29 | /// </summary> | ||
30 | public string Description { get; set; } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Usage for the command line option. | ||
34 | /// </summary> | ||
35 | public string Usage { get; set; } | ||
36 | |||
37 | /// <summary> | ||
38 | /// Optional additional notes for the command line option. | ||
39 | /// </summary> | ||
40 | public string Notes { get; set; } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Optional list of command line switches. | ||
44 | /// </summary> | ||
45 | public IReadOnlyCollection<CommandLineHelpSwitch> Switches { get; set; } | ||
46 | |||
47 | /// <summary> | ||
48 | /// Optional list of command line commands. | ||
49 | /// </summary> | ||
50 | public IReadOnlyCollection<CommandLineHelpCommand> Commands { get; set; } | ||
51 | } | ||
52 | } | ||
diff --git a/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelpCommand.cs b/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelpCommand.cs new file mode 100644 index 00000000..a9fc70f9 --- /dev/null +++ b/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelpCommand.cs | |||
@@ -0,0 +1,31 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Extensibility.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// A command line command description. | ||
7 | /// </summary> | ||
8 | public class CommandLineHelpCommand | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates help for command line command. | ||
12 | /// </summary> | ||
13 | /// <param name="name">Name of command.</param> | ||
14 | /// <param name="description">Description for command.</param> | ||
15 | public CommandLineHelpCommand(string name, string description) | ||
16 | { | ||
17 | Name = name; | ||
18 | Description = description; | ||
19 | } | ||
20 | |||
21 | /// <summary> | ||
22 | /// Name of command. | ||
23 | /// </summary> | ||
24 | public string Name { get; set; } | ||
25 | |||
26 | /// <summary> | ||
27 | /// Description of the command. | ||
28 | /// </summary> | ||
29 | public string Description { get; set; } | ||
30 | } | ||
31 | } | ||
diff --git a/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelpSwitch.cs b/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelpSwitch.cs new file mode 100644 index 00000000..19c014ad --- /dev/null +++ b/src/api/wix/WixToolset.Extensibility/Data/CommandLineHelpSwitch.cs | |||
@@ -0,0 +1,47 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Extensibility.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// A command line switch description. | ||
7 | /// </summary> | ||
8 | public class CommandLineHelpSwitch | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// Creates help for command line switch. | ||
12 | /// </summary> | ||
13 | /// <param name="name">Name of switch.</param> | ||
14 | /// <param name="description">Description for switch.</param> | ||
15 | public CommandLineHelpSwitch(string name, string description) : this(name, null, description) | ||
16 | { | ||
17 | } | ||
18 | |||
19 | /// <summary> | ||
20 | /// Creates help for command line switch. | ||
21 | /// </summary> | ||
22 | /// <param name="name">Name of switch.</param> | ||
23 | /// <param name="shortName">Optional short name of switch.</param> | ||
24 | /// <param name="description">Description for switch.</param> | ||
25 | public CommandLineHelpSwitch(string name, string shortName, string description) | ||
26 | { | ||
27 | Name = name; | ||
28 | ShortName = shortName; | ||
29 | Description = description; | ||
30 | } | ||
31 | |||
32 | /// <summary> | ||
33 | /// Name for switch. | ||
34 | /// </summary> | ||
35 | public string Name { get; set; } | ||
36 | |||
37 | /// <summary> | ||
38 | /// Optional short name for switch. | ||
39 | /// </summary> | ||
40 | public string ShortName { get; set; } | ||
41 | |||
42 | /// <summary> | ||
43 | /// Description of the switch. | ||
44 | /// </summary> | ||
45 | public string Description { get; set; } | ||
46 | } | ||
47 | } | ||
diff --git a/src/api/wix/WixToolset.Extensibility/Data/ExtensionCommandLineSwitch.cs b/src/api/wix/WixToolset.Extensibility/Data/ExtensionCommandLineSwitch.cs deleted file mode 100644 index 14b5dabb..00000000 --- a/src/api/wix/WixToolset.Extensibility/Data/ExtensionCommandLineSwitch.cs +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.Extensibility.Data | ||
4 | { | ||
5 | /// <summary> | ||
6 | /// A command line option. | ||
7 | /// </summary> | ||
8 | public struct ExtensionCommandLineSwitch | ||
9 | { | ||
10 | /// <summary> | ||
11 | /// | ||
12 | /// </summary> | ||
13 | public string Switch { get; set; } | ||
14 | |||
15 | /// <summary> | ||
16 | /// | ||
17 | /// </summary> | ||
18 | public string Description { get; set; } | ||
19 | } | ||
20 | } | ||
diff --git a/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs b/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs index b6c9ef3e..1f58bfb5 100644 --- a/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs +++ b/src/api/wix/WixToolset.Extensibility/Data/ICommandLineCommand.cs | |||
@@ -12,19 +12,19 @@ namespace WixToolset.Extensibility.Data | |||
12 | public interface ICommandLineCommand | 12 | public interface ICommandLineCommand |
13 | { | 13 | { |
14 | /// <summary> | 14 | /// <summary> |
15 | /// Indicates the command-line should show help for the command. | 15 | /// Indicates the command-line should show the logo. |
16 | /// </summary> | 16 | /// </summary> |
17 | bool ShowHelp { get; set; } | 17 | bool ShowLogo { get; } |
18 | 18 | ||
19 | /// <summary> | 19 | /// <summary> |
20 | /// Indicates the command-line should show the command-line logo. | 20 | /// Indicates the command-line parsing can stop. |
21 | /// </summary> | 21 | /// </summary> |
22 | bool ShowLogo { get; set; } | 22 | bool StopParsing { get; } |
23 | 23 | ||
24 | /// <summary> | 24 | /// <summary> |
25 | /// Indicates the command-line parsing can stop. | 25 | /// Gets the help for this command. |
26 | /// </summary> | 26 | /// </summary> |
27 | bool StopParsing { get; } | 27 | CommandLineHelp GetCommandLineHelp(); |
28 | 28 | ||
29 | /// <summary> | 29 | /// <summary> |
30 | /// Executes the command. | 30 | /// Executes the command. |
diff --git a/src/api/wix/WixToolset.Extensibility/IExtensionCommandLine.cs b/src/api/wix/WixToolset.Extensibility/IExtensionCommandLine.cs index f7b19955..304c30bb 100644 --- a/src/api/wix/WixToolset.Extensibility/IExtensionCommandLine.cs +++ b/src/api/wix/WixToolset.Extensibility/IExtensionCommandLine.cs | |||
@@ -2,7 +2,6 @@ | |||
2 | 2 | ||
3 | namespace WixToolset.Extensibility | 3 | namespace WixToolset.Extensibility |
4 | { | 4 | { |
5 | using System.Collections.Generic; | ||
6 | using WixToolset.Extensibility.Data; | 5 | using WixToolset.Extensibility.Data; |
7 | using WixToolset.Extensibility.Services; | 6 | using WixToolset.Extensibility.Services; |
8 | 7 | ||
@@ -12,10 +11,9 @@ namespace WixToolset.Extensibility | |||
12 | public interface IExtensionCommandLine | 11 | public interface IExtensionCommandLine |
13 | { | 12 | { |
14 | /// <summary> | 13 | /// <summary> |
15 | /// Gets the supported command line types for this extension. | 14 | /// Gets the help for this extension. |
16 | /// </summary> | 15 | /// </summary> |
17 | /// <value>The supported command line types for this extension.</value> | 16 | CommandLineHelp GetCommandLineHelp(); |
18 | IReadOnlyCollection<ExtensionCommandLineSwitch> CommandLineSwitches { get; } | ||
19 | 17 | ||
20 | /// <summary> | 18 | /// <summary> |
21 | /// Called before the command-line is parsed. | 19 | /// Called before the command-line is parsed. |