class Codestatus::PackageResolvers::Base

Constants

BITBUCKET_REPOSITORY_REGEXP
GITHUB_REPOSITORY_REGEXP

Attributes

package[R]

Public Class Methods

new(package) click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 15
def initialize(package)
  @package = package
end
resolve(package) click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 7
def self.resolve(package)
  self.new(package).resolve
end
resolve!(package) click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 11
def self.resolve!(package)
  self.new(package).resolve!
end

Public Instance Methods

resolve() click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 21
def resolve
  detect_repository
rescue PackageNotFoundError, RepositoryNotFoundError
  # noop
end
resolve!() click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 27
def resolve!
  detect_repository
end

Private Instance Methods

bitbucket_repository() click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 54
def bitbucket_repository
  urls.map { |url|
    matched = BITBUCKET_REPOSITORY_REGEXP.match(url)
    next unless matched

    repo = [matched[:owner], matched[:repo]].join('/')
    Repositories::BitbucketRepository.new(repo)
  }.compact.first
end
detect_repository() click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 33
def detect_repository
  raise PackageNotFoundError unless found?
  repository = github_repository || bitbucket_repository
  raise RepositoryNotFoundError unless repository
  repository
end
found?() click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 40
def found?
  raise NotImplementedError
end
github_repository() click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 44
def github_repository
  urls.map { |url|
    matched = GITHUB_REPOSITORY_REGEXP.match(url)
    next unless matched

    repo = [matched[:owner], matched[:repo]].join('/')
    Repositories::GitHubRepository.new(repo)
  }.compact.first
end
urls() click to toggle source
# File lib/codestatus/package_resolvers/base.rb, line 64
def urls
  raise NotImplementedError
end