summaryrefslogtreecommitdiff
path: root/app/services/mattermost/commands/merge_request_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/mattermost/commands/merge_request_service.rb')
-rw-r--r--app/services/mattermost/commands/merge_request_service.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/app/services/mattermost/commands/merge_request_service.rb b/app/services/mattermost/commands/merge_request_service.rb
new file mode 100644
index 00000000000..907834ee0c2
--- /dev/null
+++ b/app/services/mattermost/commands/merge_request_service.rb
@@ -0,0 +1,46 @@
+module Mattermost
+ module Commands
+ class MergeRequestService < Mattermost::Commands::BaseService
+ class << self
+ def triggered_by?(command)
+ command == 'mergerequest'
+ end
+
+ def available?(project)
+ project.merge_requests_enabled?
+ end
+
+ def help_message(project)
+ return nil unless available?(project)
+
+ message = "mergerequest show <merge request id>\n"
+ message << "mergerequest search <query>"
+ end
+ end
+
+ private
+
+ def subcommands
+ %w[show search]
+ end
+
+ def collection
+ project.merge_requests
+ end
+
+ def readable?(_)
+ can?(current_user, :read_merge_request, project)
+ end
+
+ # 'mergerequest show 123' => 'show', ['123']
+ # 'mergerequest search my query' => 'search',['my', 'query']
+ def parse_command
+ split = command.split
+ subcommand = split[1]
+ args = split[2..-1]
+
+ return subcommand, args
+ end
+ end
+ end
+end