class ModuleSync::SourceCode

Provide methods to retrieve source code attributes

Attributes

given_name[R]
options[R]

Public Class Methods

new(given_name, options) click to toggle source
# File lib/modulesync/source_code.rb, line 12
def initialize(given_name, options)
  @options = Util.symbolize_keys(options || {})

  @given_name = given_name

  return unless given_name.include?('/')

  @repository_name = given_name.split('/').last
  @repository_namespace = given_name.split('/')[0...-1].join('/')
end

Public Instance Methods

git_service() click to toggle source
# File lib/modulesync/source_code.rb, line 51
def git_service
  return nil if git_service_configuration.nil?

  @git_service ||= GitService::Factory.instantiate(**git_service_configuration)
end
git_service_configuration() click to toggle source
# File lib/modulesync/source_code.rb, line 57
def git_service_configuration
  @git_service_configuration ||= GitService.configuration_for(sourcecode: self)
rescue GitService::UnguessableTypeError
  nil
end
open_pull_request() click to toggle source
# File lib/modulesync/source_code.rb, line 63
def open_pull_request
  git_service.open_pull_request(
    repo_path: repository_path,
    namespace: repository_namespace,
    title: ModuleSync.options[:pr_title],
    message: ModuleSync.options[:message],
    source_branch: ModuleSync.options[:remote_branch] || ModuleSync.options[:branch] || repository.default_branch,
    target_branch: ModuleSync.options[:pr_target_branch] || repository.default_branch,
    labels: ModuleSync::Util.parse_list(ModuleSync.options[:pr_labels]),
    noop: ModuleSync.options[:noop],
  )
end
path(*parts) click to toggle source
# File lib/modulesync/source_code.rb, line 47
def path(*parts)
  File.join(working_directory, *parts)
end
repository() click to toggle source
# File lib/modulesync/source_code.rb, line 23
def repository
  @repository ||= Repository.new directory: working_directory, remote: repository_remote
end
repository_name() click to toggle source
# File lib/modulesync/source_code.rb, line 27
def repository_name
  @repository_name ||= given_name
end
repository_namespace() click to toggle source
# File lib/modulesync/source_code.rb, line 31
def repository_namespace
  @repository_namespace ||= @options[:namespace] || ModuleSync.options[:namespace]
end
repository_path() click to toggle source
# File lib/modulesync/source_code.rb, line 35
def repository_path
  @repository_path ||= "#{repository_namespace}/#{repository_name}"
end
repository_remote() click to toggle source
# File lib/modulesync/source_code.rb, line 39
def repository_remote
  @repository_remote ||= @options[:remote] || _repository_remote
end
working_directory() click to toggle source
# File lib/modulesync/source_code.rb, line 43
def working_directory
  @working_directory ||= File.join(ModuleSync.options[:project_root], repository_path)
end

Private Instance Methods

_repository_remote() click to toggle source
# File lib/modulesync/source_code.rb, line 78
def _repository_remote
  git_base = ModuleSync.options[:git_base]
  git_base.start_with?('file://') ? "#{git_base}#{repository_path}" : "#{git_base}#{repository_path}.git"
end