File: gitlab_ci_yml.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (37 lines) | stat: -rw-r--r-- 1,128 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# frozen_string_literal: true

module BlobViewer
  class GitlabCiYml < Base
    include ServerSide
    include Auxiliary

    self.partial_name = 'gitlab_ci_yml'
    self.loading_partial_name = 'gitlab_ci_yml_loading'
    self.binary = false

    # rubocop:disable Lint/UnusedMethodArgument -- The keyword argument is required by the parent class but not here.
    def self.can_render?(blob, verify_binary: true)
      blob.path == blob.project.ci_config_path_or_default
    end
    # rubocop:enable Lint/UnusedMethodArgument

    def validation_message(opts)
      return @validation_message if defined?(@validation_message)

      prepare!

      @validation_message = Gitlab::Ci::Lint
        .new(project: opts[:project], current_user: opts[:user], sha: opts[:sha], verify_project_sha: false)
        .validate(blob.data).errors.first
    end

    def valid?(opts)
      validation_message(opts).blank?
    end

    def visible_to?(_current_user, ref)
      # By checking if the ref is a branch or tag, we can avoid verifying the `sha` when calling `Ci::Lint`.
      project.repository.branch_or_tag?(ref)
    end
  end
end