Class: Gitlab::SlashCommands::Command

Inherits:
BaseCommand show all
Defined in:
lib/gitlab/slash_commands/command.rb

Constant Summary

Constants inherited from BaseCommand

BaseCommand::QUERY_LIMIT

Instance Attribute Summary

Attributes inherited from BaseCommand

#chat_name, #current_user, #params, #project

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseCommand

allowed?, available?, can?, #collection, help_message, #initialize, match

Constructor Details

This class inherits a constructor from Gitlab::SlashCommands::BaseCommand

Class Method Details

.commandsObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/gitlab/slash_commands/command.rb', line 6

def self.commands
  commands = [
    Gitlab::SlashCommands::IssueShow,
    Gitlab::SlashCommands::IssueNew,
    Gitlab::SlashCommands::IssueSearch,
    Gitlab::SlashCommands::IssueMove,
    Gitlab::SlashCommands::IssueClose,
    Gitlab::SlashCommands::IssueComment,
    Gitlab::SlashCommands::Deploy,
    Gitlab::SlashCommands::Run
  ]

  if Feature.enabled?(:incident_declare_slash_command)
    commands << Gitlab::SlashCommands::IncidentManagement::IncidentNew
  end

  commands
end

Instance Method Details

#executeObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/gitlab/slash_commands/command.rb', line 25

def execute
  command, match = match_command

  if command
    if command.allowed?(project, current_user)
      command.new(project, chat_name, params).execute(match)
    else
      Gitlab::SlashCommands::Presenters::Access.new.access_denied(project)
    end
  else
    Gitlab::SlashCommands::Help.new(project, chat_name, params)
      .execute(available_commands, params[:text])
  end
end

#match_commandObject



40
41
42
43
44
45
46
47
48
# File 'lib/gitlab/slash_commands/command.rb', line 40

def match_command
  match = nil
  service =
    available_commands.find do |klass|
      match = klass.match(params[:text])
    end

  [service, match]
end