mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-07-25 16:03:48 +00:00
41 lines
927 B
Ruby
41 lines
927 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module DependencyLinker
|
|
LINKERS = [
|
|
GemfileLinker,
|
|
GemspecLinker,
|
|
PackageJsonLinker,
|
|
ComposerJsonLinker,
|
|
PodfileLinker,
|
|
PodspecLinker,
|
|
PodspecJsonLinker,
|
|
CartfileLinker,
|
|
GodepsJsonLinker,
|
|
RequirementsTxtLinker,
|
|
CargoTomlLinker,
|
|
GoModLinker,
|
|
GoSumLinker
|
|
].freeze
|
|
|
|
def self.linker(blob_name)
|
|
LINKERS.find { |linker| linker.support?(blob_name) }
|
|
end
|
|
|
|
def self.link(blob_name, plain_text, highlighted_text, used_on: :blob)
|
|
linker = linker(blob_name)
|
|
return highlighted_text unless linker
|
|
|
|
usage_counter.increment(used_on: used_on)
|
|
linker.link(plain_text, highlighted_text)
|
|
end
|
|
|
|
def self.usage_counter
|
|
Gitlab::Metrics.counter(
|
|
:dependency_linker_usage,
|
|
'The number of times dependency linker is used'
|
|
)
|
|
end
|
|
end
|
|
end
|