summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-12-08 10:48:08 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-12-12 12:59:01 +0100
commit1b6c2c3c0a38bed733d861902eb8c9397ab76cd3 (patch)
treee65c8f253b7de1cecdda837b6704d017e59de97e
parent516dc7a5be3624f1866fa46f19f6472e2f9fae22 (diff)
downloadgitlab-ce-1b6c2c3c0a38bed733d861902eb8c9397ab76cd3.tar.gz
Introduce `cancelable` and `returnable` [ci skip]
-rw-r--r--lib/gitlab/ci/status/build/cancelable.rb31
-rw-r--r--lib/gitlab/ci/status/build/common.rb25
-rw-r--r--lib/gitlab/ci/status/build/factory.rb2
-rw-r--r--lib/gitlab/ci/status/build/play.rb10
-rw-r--r--lib/gitlab/ci/status/build/retryable.rb31
5 files changed, 64 insertions, 35 deletions
diff --git a/lib/gitlab/ci/status/build/cancelable.rb b/lib/gitlab/ci/status/build/cancelable.rb
new file mode 100644
index 00000000000..bff0464ef0c
--- /dev/null
+++ b/lib/gitlab/ci/status/build/cancelable.rb
@@ -0,0 +1,31 @@
+module Gitlab
+ module Ci
+ module Status
+ module Status
+ class Cancelable < SimpleDelegator
+ extend Status::Extended
+
+ def has_action?(current_user)
+ can?(current_user, :update_build, subject)
+ end
+
+ def action_icon
+ 'remove'
+ end
+
+ def action_path
+ cancel_namespace_project_build_path(subject.project.namespace, subject.project, subject)
+ end
+
+ def action_method
+ :post
+ end
+
+ def self.matches?(build)
+ build.cancelable?
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/status/build/common.rb b/lib/gitlab/ci/status/build/common.rb
index 2bed68d1a11..3e47d7dfd20 100644
--- a/lib/gitlab/ci/status/build/common.rb
+++ b/lib/gitlab/ci/status/build/common.rb
@@ -12,31 +12,6 @@ module Gitlab
@subject.project,
@subject.pipeline)
end
-
- def has_action?(current_user)
- (subject.cancelable? || subject.retryable?) &&
- can?(current_user, :update_build, @subject)
- end
-
- def action_icon
- case
- when subject.cancelable? then 'icon_play'
- when subject.retryable? then 'repeat'
- end
- end
-
- def action_path
- case
- when subject.cancelable?
- cancel_namespace_project_build_path(subject.project.namespace, subject.project, subject)
- when subject.retryable?
- retry_namespace_project_build_path(subject.project.namespace, subject.project, subject)
- end
- end
-
- def action_method
- :post
- end
end
end
end
diff --git a/lib/gitlab/ci/status/build/factory.rb b/lib/gitlab/ci/status/build/factory.rb
index d8a9f53f236..8f420a93954 100644
--- a/lib/gitlab/ci/status/build/factory.rb
+++ b/lib/gitlab/ci/status/build/factory.rb
@@ -6,7 +6,7 @@ module Gitlab
private
def extended_statuses
- [Stop, Play]
+ [Stop, Play, Cancelable, Retryable]
end
def core_status
diff --git a/lib/gitlab/ci/status/build/play.rb b/lib/gitlab/ci/status/build/play.rb
index 581c81d0175..d295850137b 100644
--- a/lib/gitlab/ci/status/build/play.rb
+++ b/lib/gitlab/ci/status/build/play.rb
@@ -13,20 +13,12 @@ module Gitlab
'play'
end
- def icon
- 'icon_status_skipped'
- end
-
- def to_s
- 'play'
- end
-
def has_action?(current_user)
can?(current_user, :update_build, subject)
end
def action_icon
- :play
+ 'play'
end
def action_path
diff --git a/lib/gitlab/ci/status/build/retryable.rb b/lib/gitlab/ci/status/build/retryable.rb
new file mode 100644
index 00000000000..b3c0eedadf8
--- /dev/null
+++ b/lib/gitlab/ci/status/build/retryable.rb
@@ -0,0 +1,31 @@
+module Gitlab
+ module Ci
+ module Status
+ module Status
+ class Retryable < SimpleDelegator
+ extend Status::Extended
+
+ def has_action?(current_user)
+ can?(current_user, :update_build, subject)
+ end
+
+ def action_icon
+ 'repeat'
+ end
+
+ def action_path
+ retry_namespace_project_build_path(subject.project.namespace, subject.project, subject)
+ end
+
+ def action_method
+ :post
+ end
+
+ def self.matches?(build)
+ build.retryable?
+ end
+ end
+ end
+ end
+ end
+end