Class: Gitlab::Shell
- Inherits:
-
Object
- Object
- Gitlab::Shell
- Extended by:
- CLI::Helpers
- Defined in:
- lib/gitlab/shell.rb,
lib/gitlab/shell_history.rb more...
Defined Under Namespace
Classes: History
Class Attribute Summary collapse
-
.arguments ⇒ Object
readonly
Returns the value of attribute arguments.
-
.command ⇒ Object
readonly
Returns the value of attribute command.
Class Method Summary collapse
-
.completion ⇒ Object
Gets called when user hits TAB key to do completion.
-
.execute(cmd = command, args = arguments) ⇒ Object
Execute a given command with arguements.
- .history ⇒ Object
- .parse_input(buffer) ⇒ Object
- .quit_shell ⇒ Object
- .setup ⇒ Object
- .start ⇒ Object
Methods included from CLI::Helpers
actions, client, confirm_command, excluded_fields, filtered_fields, get_keys, gitlab_helper, help, hex_color?, method_owners, output_json, output_table, record_hash, record_table, required_fields, symbolize_keys, valid_command?, yaml_load
Class Attribute Details
permalink .arguments ⇒ Object (readonly)
Returns the value of attribute arguments.
14 15 16 |
# File 'lib/gitlab/shell.rb', line 14 def arguments @arguments end |
permalink .command ⇒ Object (readonly)
Returns the value of attribute command.
14 15 16 |
# File 'lib/gitlab/shell.rb', line 14 def command @command end |
Class Method Details
permalink .completion ⇒ Object
Gets called when user hits TAB key to do completion
62 63 64 |
# File 'lib/gitlab/shell.rb', line 62 def completion proc { |str| actions.map(&:to_s).grep(/^#{Regexp.escape(str)}/) } end |
permalink .execute(cmd = command, args = arguments) ⇒ Object
Execute a given command with arguements
67 68 69 70 71 72 |
# File 'lib/gitlab/shell.rb', line 67 def execute(cmd = command, args = arguments) raise "Unknown command: #{cmd}. See the 'help' for a list of valid commands." unless actions.include?(cmd.to_sym) confirm_command(cmd) gitlab_helper(cmd, args) end |
permalink .history ⇒ Object
[View source]
79 80 81 |
# File 'lib/gitlab/shell.rb', line 79 def history @history ||= History.new end |
permalink .parse_input(buffer) ⇒ Object
[View source]
47 48 49 50 51 52 |
# File 'lib/gitlab/shell.rb', line 47 def parse_input(buffer) buf = Shellwords.shellwords(buffer) @command = buf.shift @arguments = buf.count.positive? ? buf : [] end |
permalink .quit_shell ⇒ Object
[View source]
74 75 76 77 |
# File 'lib/gitlab/shell.rb', line 74 def quit_shell history.save exit end |
permalink .setup ⇒ Object
[View source]
54 55 56 57 58 59 |
# File 'lib/gitlab/shell.rb', line 54 def setup history.load Readline.completion_proc = completion Readline.completion_append_character = ' ' end |
permalink .start ⇒ Object
[View source]
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/gitlab/shell.rb', line 16 def start trap('INT') { quit_shell } # capture ctrl-c setup while (buffer = Readline.readline('gitlab> ')) begin parse_input buffer @arguments.map! { |arg| symbolize_keys(yaml_load(arg)) } case buffer when nil, '' next when 'exit' quit_shell when /^\bhelp\b+/ puts help(arguments[0]) { |out| out.gsub!(/Gitlab\./, 'gitlab> ') } else history << buffer data = execute command, arguments output_table command, arguments, data end rescue StandardError => e puts e. end end quit_shell # save history if user presses ctrl-d end |