diff options
author | Alexis Reigel <alexis.reigel.ext@siemens.com> | 2017-12-04 11:18:54 +0100 |
---|---|---|
committer | Alexis Reigel <alexis.reigel.ext@siemens.com> | 2018-01-17 09:55:00 +0100 |
commit | ac92d70d9025e1c90bffa99c08bfc4cdb2fc36c9 (patch) | |
tree | 5363b42dbe41a07759558eed33fe0f1193d00b61 /app/models/concerns | |
parent | 88832ba9392d4521b7de003e6d7ea88c59f2d579 (diff) | |
download | gitlab-ce-ac92d70d9025e1c90bffa99c08bfc4cdb2fc36c9.tar.gz |
extract concern for hook triggers
Diffstat (limited to 'app/models/concerns')
-rw-r--r-- | app/models/concerns/triggerable_hooks.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/models/concerns/triggerable_hooks.rb b/app/models/concerns/triggerable_hooks.rb new file mode 100644 index 00000000000..6e02275d552 --- /dev/null +++ b/app/models/concerns/triggerable_hooks.rb @@ -0,0 +1,31 @@ +module TriggerableHooks + AVAILABLE_TRIGGERS = { + repository_update_hooks: :repository_update_events, + push_hooks: :push_events, + tag_push_hooks: :tag_push_events, + issue_hooks: :issues_events, + confidential_issue_hooks: :confidential_issues_events, + note_hooks: :note_events, + merge_request_hooks: :merge_requests_events, + job_hooks: :job_events, + pipeline_hooks: :pipeline_events, + wiki_page_hooks: :wiki_page_events + }.freeze + + extend ActiveSupport::Concern + + class_methods do + attr_reader :triggerable_hooks + + private + + def triggerable_hooks(hooks) + triggers = AVAILABLE_TRIGGERS.slice(*hooks) + const_set('TRIGGERS', triggers) + + self::TRIGGERS.each do |trigger, event| + scope trigger, -> { where(event => true) } + end + end + end +end |