debian-mirror-gitlab/app/finders/packages/go/version_finder.rb
2020-08-09 17:44:08 +05:30

44 lines
1 KiB
Ruby

# frozen_string_literal: true
module Packages
module Go
class VersionFinder
include Gitlab::Golang
attr_reader :mod
def initialize(mod)
@mod = mod
end
def execute
@mod.project.repository.tags
.filter { |tag| semver_tag? tag }
.map { |tag| @mod.version_by(ref: tag) }
.filter { |ver| ver.valid? }
end
def find(target)
case target
when String
if pseudo_version? target
semver = parse_semver(target)
commit = pseudo_version_commit(@mod.project, semver)
Packages::Go::ModuleVersion.new(@mod, :pseudo, commit, name: target, semver: semver)
else
@mod.version_by(ref: target)
end
when Gitlab::Git::Ref
@mod.version_by(ref: target)
when ::Commit, Gitlab::Git::Commit
@mod.version_by(commit: target)
else
raise ArgumentError.new 'not a valid target'
end
end
end
end
end