Class: WavefrontCommandBase
- Inherits:
-
Object
- Object
- WavefrontCommandBase
- Defined in:
- lib/wavefront-cli/commands/base.rb
Overview
A base class which all command classes extend.
Direct Known Subclasses
WavefrontCommandAlert, WavefrontCommandApitoken, WavefrontCommandCloudintegration, WavefrontCommandConfig, WavefrontCommandDashboard, WavefrontCommandDerivedmetric, WavefrontCommandEvent, WavefrontCommandIntegration, WavefrontCommandLink, WavefrontCommandMessage, WavefrontCommandMetric, WavefrontCommandNotificant, WavefrontCommandProxy, WavefrontCommandQuery, WavefrontCommandSavedsearch, WavefrontCommandSettings, WavefrontCommandSource, WavefrontCommandUser, WavefrontCommandUsergroup, WavefrontCommandWebhook, WavefrontCommandWindow, WavefrontCommandWrite
Instance Method Summary collapse
-
#_commands ⇒ Array
Inheriting classes must override this method.
-
#_options ⇒ Array
Inheriting classes must override this method.
-
#acl_commands ⇒ Array
Anything which takes ACLs provides the same interface.
-
#commands(term_width = TW) ⇒ String
The subcommands the command offers.
-
#common_options ⇒ Array
Many commands have these options.
- #description ⇒ Object
-
#docopt ⇒ String
A full options string which docopt understands.
-
#global_options ⇒ Array
All commands have these options.
-
#opt_row(opt, width, term_width = TW) ⇒ Object
Formats an option string.
-
#option_column_width ⇒ Integer
The width of the column containing short and long options.
-
#options(term_width = TW) ⇒ String
rubocop:disable Metrics/AbcSize.
-
#postscript ⇒ String
Which will be printed underneath the options.
-
#sdk_class ⇒ String
The name of the SDK class which does the work for this command.
-
#sdk_file ⇒ String
The name of the SDK file which does the work for this command.
-
#tag_commands ⇒ Array
Anything which takes tags provides the same interface.
- #thing ⇒ Object
- #things ⇒ Object
-
#word ⇒ String
The command keyword.
Instance Method Details
#_commands ⇒ Array
Inheriting classes must override this method
67 68 69 |
# File 'lib/wavefront-cli/commands/base.rb', line 67 def _commands [] end |
#_options ⇒ Array
Inheriting classes must override this method
38 39 40 |
# File 'lib/wavefront-cli/commands/base.rb', line 38 def [] end |
#acl_commands ⇒ Array
Anything which takes ACLs provides the same interface
57 58 59 60 61 62 |
# File 'lib/wavefront-cli/commands/base.rb', line 57 def acl_commands ["acls #{CMN} <id>", "acl #{CMN} clear <id>", "acl #{CMN} grant (view | modify) on <id> to <name>...", "acl #{CMN} revoke (view | modify) on <id> from <name>..."] end |
#commands(term_width = TW) ⇒ String
Returns the subcommands the command offers.
104 105 106 107 108 |
# File 'lib/wavefront-cli/commands/base.rb', line 104 def commands(term_width = TW) _commands.flatten.each_with_object("Usage:\n") do |cmd, ret| ret.<< ' ' + "#{CMD} #{word} #{cmd}\n".cmd_fold(term_width) + "\n" end + " #{CMD} #{word} --help" end |
#common_options ⇒ Array
Many commands have these options
30 31 32 33 |
# File 'lib/wavefront-cli/commands/base.rb', line 30 def ['-E, --endpoint=URI cluster endpoint', '-t, --token=TOKEN Wavefront authentication token'] end |
#description ⇒ Object
9 10 11 |
# File 'lib/wavefront-cli/commands/base.rb', line 9 def description "view and manage #{things}" end |
#docopt ⇒ String
Returns a full options string which docopt understands.
160 161 162 |
# File 'lib/wavefront-cli/commands/base.rb', line 160 def docopt commands + "\n\n" + + "\n" + postscript end |
#global_options ⇒ Array
All commands have these options
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/wavefront-cli/commands/base.rb', line 16 def ['-c, --config=FILE path to configuration file', '-P, --profile=NAME profile in configuration file', '-D, --debug enable debug mode', '-n, --noop do not perform API calls', '-V, --verbose be verbose', '-f, --format=STRING output format', '-M, --items-only only show items in machine-parseable formats', '-h, --help show this message'] end |
#opt_row(opt, width, term_width = TW) ⇒ Object
Formats an option string.
138 139 140 141 |
# File 'lib/wavefront-cli/commands/base.rb', line 138 def opt_row(opt, width, term_width = TW) format(" %s %-#{width}s %s\n", *opt.split(/\s+/, 3)) .opt_fold(term_width, width + 5) end |
#option_column_width ⇒ Integer
Returns the width of the column containing short and long options.
146 147 148 149 150 |
# File 'lib/wavefront-cli/commands/base.rb', line 146 def option_column_width ( + ).flatten.map do |o| o.split(/\s+/, 3)[0..1].join(' ').size end.max end |
#options(term_width = TW) ⇒ String
rubocop:disable Metrics/AbcSize
115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/wavefront-cli/commands/base.rb', line 115 def (term_width = TW) width = option_column_width ret = '' unless .empty? ret.<< "Global options:\n" .each { |o| ret.<< opt_row(o, width, term_width) } ret.<< "\n" end ret.<< "Options:\n" .flatten.each { |o| ret.<< opt_row(o, width, term_width) } ret end |
#postscript ⇒ String
Returns which will be printed underneath the options.
154 155 156 |
# File 'lib/wavefront-cli/commands/base.rb', line 154 def postscript '' end |
#sdk_class ⇒ String
Returns the name of the SDK class which does the work for this command.
88 89 90 |
# File 'lib/wavefront-cli/commands/base.rb', line 88 def sdk_class word.capitalize end |
#sdk_file ⇒ String
Returns the name of the SDK file which does the work for this command.
95 96 97 |
# File 'lib/wavefront-cli/commands/base.rb', line 95 def sdk_file word end |
#tag_commands ⇒ Array
Anything which takes tags provides the same interface
45 46 47 48 49 50 51 52 |
# File 'lib/wavefront-cli/commands/base.rb', line 45 def tag_commands ["tags #{CMN} <id>", "tag set #{CMN} <id> <tag>...", "tag clear #{CMN} <id>", "tag add #{CMN} <id> <tag>", "tag delete #{CMN} <id> <tag>", "tag pathsearch #{CMN} [-al] [-o offset] [-L limit] <word>"] end |
#thing ⇒ Object
77 78 79 |
# File 'lib/wavefront-cli/commands/base.rb', line 77 def thing word end |
#things ⇒ Object
81 82 83 |
# File 'lib/wavefront-cli/commands/base.rb', line 81 def things thing + 's' end |
#word ⇒ String
Returns the command keyword.
73 74 75 |
# File 'lib/wavefront-cli/commands/base.rb', line 73 def word self.class.name.sub(/WavefrontCommand/, '').downcase end |