Class: ModuleSync::SourceCode

Inherits:
Object
  • Object
show all
Defined in:
lib/modulesync/source_code.rb

Overview

Provide methods to retrieve source code attributes

Direct Known Subclasses

PuppetModule

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(given_name, options) ⇒ SourceCode

Returns a new instance of SourceCode.



12
13
14
15
16
17
18
19
20
21
# 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

Instance Attribute Details

#given_nameObject (readonly)

Returns the value of attribute given_name.



10
11
12
# File 'lib/modulesync/source_code.rb', line 10

def given_name
  @given_name
end

#optionsObject (readonly)

Returns the value of attribute options.



10
11
12
# File 'lib/modulesync/source_code.rb', line 10

def options
  @options
end

Instance Method Details

#git_serviceObject



51
52
53
54
55
# 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_configurationObject



57
58
59
60
61
# 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_requestObject



63
64
65
66
67
68
69
70
71
72
73
74
# 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) ⇒ Object



47
48
49
# File 'lib/modulesync/source_code.rb', line 47

def path(*parts)
  File.join(working_directory, *parts)
end

#repositoryObject



23
24
25
# File 'lib/modulesync/source_code.rb', line 23

def repository
  @repository ||= Repository.new directory: working_directory, remote: repository_remote
end

#repository_nameObject



27
28
29
# File 'lib/modulesync/source_code.rb', line 27

def repository_name
  @repository_name ||= given_name
end

#repository_namespaceObject



31
32
33
# File 'lib/modulesync/source_code.rb', line 31

def repository_namespace
  @repository_namespace ||= @options[:namespace] || ModuleSync.options[:namespace]
end

#repository_pathObject



35
36
37
# File 'lib/modulesync/source_code.rb', line 35

def repository_path
  @repository_path ||= "#{repository_namespace}/#{repository_name}"
end

#repository_remoteObject



39
40
41
# File 'lib/modulesync/source_code.rb', line 39

def repository_remote
  @repository_remote ||= @options[:remote] || _repository_remote
end

#working_directoryObject



43
44
45
# File 'lib/modulesync/source_code.rb', line 43

def working_directory
  @working_directory ||= File.join(ModuleSync.options[:project_root], repository_path)
end