class Gitlab::Shell
Attributes
Public Class Methods
Source
# File lib/gitlab/shell.rb, line 62 def completion proc { |str| actions.map(&:to_s).grep(/^#{Regexp.escape(str)}/) } end
Gets called when user hits TAB key to do completion
Source
# 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
Execute a given command with arguements
Source
# File lib/gitlab/shell.rb, line 47 def parse_input(buffer) buf = Shellwords.shellwords(buffer) @command = buf.shift @arguments = buf.count.positive? ? buf : [] end
Source
# File lib/gitlab/shell.rb, line 54 def setup history.load Readline.completion_proc = completion Readline.completion_append_character = ' ' end
Source
# 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.message end end quit_shell # save history if user presses ctrl-d end