/********* ** Private methods *********/ /**** ** Commands ****/ /// <summary>Handle the 'patch help' command.</summary> /// <param name="args">The subcommand arguments.</param> /// <returns>Returns whether the command was handled.</returns> private bool HandleHelp(string[] args) { // generate command info var helpEntries = new InvariantDictionary <string> { ["help"] = $"{this.CommandName} help\n Usage: {this.CommandName} help\n Lists all available {this.CommandName} commands.\n\n Usage: {this.CommandName} help <cmd>\n Provides information for a specific {this.CommandName} command.\n - cmd: The {this.CommandName} command name.", ["summary"] = $"{this.CommandName} summary\n Usage: {this.CommandName} summary\n Shows a summary of the current conditions and loaded patches.", ["update"] = $"{this.CommandName} update\n Usage: {this.CommandName} update\n Immediately refreshes the condition context and rechecks all patches.", ["parse"] = $"{this.CommandName} parse\n usage: {this.CommandName} parse \"value\"\n Parses the given token string and shows the result. For example, `{this.CommandName} parse \"assets/{{{{Season}}}}.png\" will show a value like \"assets/Spring.png\".\n\n{this.CommandName} parse \"value\" \"content-pack.id\"\n Parses the given token string and shows the result, using tokens available to the specified content pack (using the ID from the content pack's manifest.json). For example, `{this.CommandName} parse \"assets/{{{{CustomToken}}}}.png\" \"Pathoschild.ExampleContentPack\".", ["export"] = $"{this.CommandName} export\n Usage: {this.CommandName} export \"<asset name>\"\n Saves a copy of an asset (including any changes from mods like Content Patcher) to the game folder. The asset name should be the target without the locale or extension, like \"Characters/Abigail\" if you want to export the value of 'Content/Characters/Abigail.xnb'.", ["reload"] = $"{this.CommandName} reload\n Usage: {this.CommandName} reload \"<content pack ID>\"\n Reloads the patches of the content.json of a content pack. Config schema changes and dynamic token changes are unsupported." }; // build output StringBuilder help = new StringBuilder(); if (!args.Any()) { help.AppendLine( $"The '{this.CommandName}' command is the entry point for Content Patcher commands. These are " + "intended for troubleshooting and aren't intended for players. You use it by specifying a more " + $"specific command (like 'help' in '{this.CommandName} help'). Here are the available commands:\n\n" ); foreach (var entry in helpEntries.OrderByIgnoreCase(p => p.Key)) { help.AppendLine(entry.Value); help.AppendLine(); } } else if (helpEntries.TryGetValue(args[0], out string entry)) { help.AppendLine(entry); } else { help.AppendLine($"Unknown command '{this.CommandName} {args[0]}'. Type '{this.CommandName} help' for available commands."); } // write output this.Monitor.Log(help.ToString(), LogLevel.Debug); return(true); }
/********* ** Private methods *********/ /**** ** Commands ****/ /// <summary>Handle the 'patch help' command.</summary> /// <param name="args">The subcommand arguments.</param> /// <returns>Returns whether the command was handled.</returns> private bool HandleHelp(string[] args) { // generate command info var helpEntries = new InvariantDictionary <string> { ["help"] = $"{this.CommandName} help\n Usage: {this.CommandName} help\n Lists all available {this.CommandName} commands.\n\n Usage: {this.CommandName} help <cmd>\n Provides information for a specific {this.CommandName} command.\n - cmd: The {this.CommandName} command name.", ["summary"] = $"{this.CommandName} summary\n Usage: {this.CommandName} summary\n Shows a summary of the current conditions and loaded patches.", ["update"] = $"{this.CommandName} update\n Usage: {this.CommandName} update\n Imediately refreshes the condition context and rechecks all patches.", ["export"] = $"{this.CommandName} export\n Usage: {this.CommandName} export \"<asset name>\"\n Saves a copy of an asset (including any changes from mods like Content Patcher) to the game folder. The asset name should be the target without the locale or extension, like \"Characters/Abigail\" if you want to export the value of 'Content/Characters/Abigail.xnb'." }; // build output StringBuilder help = new StringBuilder(); if (!args.Any()) { help.AppendLine( $"The '{this.CommandName}' command is the entry point for Content Patcher commands. These are " + "intended for troubleshooting and aren't intended for players. You use it by specifying a more " + $"specific command (like 'help' in '{this.CommandName} help'). Here are the available commands:\n\n" ); foreach (var entry in helpEntries.OrderByIgnoreCase(p => p.Key)) { help.AppendLine(entry.Value); help.AppendLine(); } } else if (helpEntries.TryGetValue(args[0], out string entry)) { help.AppendLine(entry); } else { help.AppendLine($"Unknown command '{this.CommandName} {args[0]}'. Type '{this.CommandName} help' for available commands."); } // write output this.Monitor.Log(help.ToString()); return(true); }
/********* ** Private methods *********/ /**** ** Commands ****/ /// <summary>Handle the 'patch help' command.</summary> /// <param name="args">The subcommand arguments.</param> /// <returns>Returns whether the command was handled.</returns> private bool HandleHelp(string[] args) { // generate command info var helpEntries = new InvariantDictionary <string> { ["help"] = $"{this.CommandName} help\n Usage: {this.CommandName} help\n Lists all available {this.CommandName} commands.\n\n Usage: {this.CommandName} help <cmd>\n Provides information for a specific {this.CommandName} command.\n - cmd: The {this.CommandName} command name.", ["summary"] = $"{this.CommandName} summary\n Usage: {this.CommandName} summary\n Shows a summary of the current conditions and loaded patches.", ["update"] = $"{this.CommandName} update\n Usage: {this.CommandName} update\n Imediately refreshes the condition context and rechecks all patches." }; // build output StringBuilder help = new StringBuilder(); if (!args.Any()) { help.AppendLine( $"The '{this.CommandName}' command is the entry point for Content Patcher commands. These are " + "intended for troubleshooting and aren't intended for players. You use it by specifying a more " + $"specific command (like 'help' in '{this.CommandName} help'). Here are the available commands:\n\n" ); foreach (var entry in helpEntries.OrderByIgnoreCase(p => p.Key)) { help.AppendLine(entry.Value); help.AppendLine(); } } else if (helpEntries.TryGetValue(args[0], out string entry)) { help.AppendLine(entry); } else { help.AppendLine($"Unknown command '{this.CommandName} {args[0]}'. Type '{this.CommandName} help' for available commands."); } // write output this.Monitor.Log(help.ToString()); return(true); }