Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/code_navigation_path.rb')
-rw-r--r--lib/gitlab/code_navigation_path.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/gitlab/code_navigation_path.rb b/lib/gitlab/code_navigation_path.rb
new file mode 100644
index 00000000000..8dd2e9cb1bb
--- /dev/null
+++ b/lib/gitlab/code_navigation_path.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+module Gitlab
+ class CodeNavigationPath
+ include Gitlab::Utils::StrongMemoize
+ include Gitlab::Routing
+
+ CODE_NAVIGATION_JOB_NAME = 'code_navigation'
+
+ def initialize(project, commit_sha)
+ @project = project
+ @commit_sha = commit_sha
+ end
+
+ def full_json_path_for(path)
+ return if Feature.disabled?(:code_navigation, project)
+ return unless build
+
+ raw_project_job_artifacts_path(project, build, path: "lsif/#{path}.json")
+ end
+
+ private
+
+ attr_reader :project, :commit_sha
+
+ def build
+ strong_memoize(:build) do
+ artifact = ::Ci::JobArtifact
+ .for_sha(commit_sha, project.id)
+ .for_job_name(CODE_NAVIGATION_JOB_NAME)
+ .last
+
+ artifact&.job
+ end
+ end
+ end
+end