UNPKG

@ably/cli

Version:

Ably CLI for Pub/Sub, Chat and Spaces

57 lines (56 loc) 1.96 kB
import { Command, Args, Flags } from '@oclif/core'; import CustomHelp from '../help.js'; export default class HelpCommand extends Command { static description = 'Display help for ably'; static args = { commands: Args.string({ description: 'Command to show help for', required: false, }), }; static strict = false; // Allow multiple arguments for nested commands static flags = { 'web-cli-help': Flags.boolean({ description: 'Show help formatted for the web CLI', hidden: true, }), }; static examples = [ '$ ably help', '$ ably help channels', '$ ably help channels publish', ]; async run() { const { argv, flags } = await this.parse(HelpCommand); const help = new CustomHelp(this.config); // If web-cli-help flag is provided, show web CLI help if (flags['web-cli-help']) { const output = help.formatWebCliRoot(); console.log(output); return; } // If no arguments, show root help if (argv.length === 0) { await help.showRootHelp(); return; } // Join all arguments to form the command ID const commandId = argv.join(':'); const command = this.config.findCommand(commandId); if (command) { // Show help for the specific command await help.showCommandHelp(command); } else { // Try with spaces instead of colons (for user convenience) const commandIdWithSpaces = argv.join(' '); const commandWithSpaces = this.config.findCommand(commandIdWithSpaces); if (commandWithSpaces) { await help.showCommandHelp(commandWithSpaces); } else { this.error(`Command "${commandIdWithSpaces}" not found.`); } } } }