Class: Vorx::GitReference

Inherits:
Object
  • Object
show all
Defined in:
lib/vorx/git_reference.rb

Constant Summary collapse

GIT_URI_REGEXP =
%r{(\w+://)(.+@)*([\w\d.]+)(:\d+){0,1}/*(.*)}.freeze
GIT_REFERENCE_REGEXP =
%r{([[:alnum:]]+:)?([[[:alnum:]]/_-]+)(:\S+)?}.freeze
PROVIDERS =
{
  'github' => 'https://github.com',
  'gitlab' => 'https://gitlab.com',
  'bitbucket' => 'https://bitbucket.org',
  nil => 'https://github.com'
}.freeze

Class Method Summary collapse

Class Method Details

.resolve(git_reference, prefix: '') ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/vorx/git_reference.rb', line 16

def resolve(git_reference, prefix: '')
  git_uri = git_reference if GIT_URI_REGEXP.match?(git_reference)

  provider, reference, version = extract_params(git_reference) unless git_uri

  # TODO: Improve
  raise 'Invalid git uri or git reference' if !reference && !git_uri

  git_uri ||= "#{PROVIDERS[provider]}/#{with_prefix(reference, prefix)}.git"
  version ||= 'master'

  GitRepository.new(
    git: git_uri,
    version: version
  )
end