summaryrefslogtreecommitdiff
path: root/app/presenters/ci/build_runner_presenter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/presenters/ci/build_runner_presenter.rb')
-rw-r--r--app/presenters/ci/build_runner_presenter.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/app/presenters/ci/build_runner_presenter.rb b/app/presenters/ci/build_runner_presenter.rb
new file mode 100644
index 00000000000..02f6c5bdf81
--- /dev/null
+++ b/app/presenters/ci/build_runner_presenter.rb
@@ -0,0 +1,43 @@
+module Ci
+ class BuildRunnerPresenter < SimpleDelegator
+ def artifacts
+ return unless options[:artifacts]
+
+ list = []
+ list << create_archive(options[:artifacts])
+ list << create_reports(options[:artifacts][:reports], expire_in: options[:artifacts][:expire_in])
+ list.flatten.compact
+ end
+
+ private
+
+ def create_archive(artifacts)
+ return unless artifacts[:untracked] || artifacts[:paths]
+
+ {
+ artifact_type: :archive,
+ artifact_format: :zip,
+ name: artifacts[:name],
+ untracked: artifacts[:untracked],
+ paths: artifacts[:paths],
+ when: artifacts[:when],
+ expire_in: artifacts[:expire_in]
+ }
+ end
+
+ def create_reports(reports, expire_in:)
+ return unless reports&.any?
+
+ reports.map do |k, v|
+ {
+ artifact_type: k.to_sym,
+ artifact_format: :gzip,
+ name: ::Ci::JobArtifact::DEFAULT_FILE_NAMES[k.to_sym],
+ paths: v,
+ when: 'always',
+ expire_in: expire_in
+ }
+ end
+ end
+ end
+end