Class: Octofart::Tasks::DataMapping

Inherits:
Object
  • Object
show all
Defined in:
lib/octofart/tasks/data_mapping.rb

Instance Method Summary collapse

Instance Method Details

#clear(params) ⇒ Object



57
58
59
60
# File 'lib/octofart/tasks/data_mapping.rb', line 57

def clear(params)
  params.delete(:items)
  params.delete(:tasks)
end

#init_repo_data(repo_name, repositories) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/octofart/tasks/data_mapping.rb', line 33

def init_repo_data(repo_name, repositories)
  puts "Initializing metadata for #{repo_name}..."

  repositories[repo_name] ||= {}
  repositories[repo_name][:tasks] ||= []
  repositories[repo_name][:base_branch] ||= {}
  repositories[repo_name][:head_branch] ||= {}

  puts repositories[repo_name]
end

#register_task(repositories, tasks, options = {}) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/octofart/tasks/data_mapping.rb', line 44

def register_task(repositories, tasks, options = {})
  puts "Registering task for #{options[:repo_name]}..."

  task = tasks.find { |t| t[:id] == options[:task_id] }
  repositories[options[:repo_name]][:tasks] << task.merge(path: options[:path])

  puts task
end

#run(params) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/octofart/tasks/data_mapping.rb', line 5

def run(params)
  params[:tasks].each do |task|
    items = search(text: task[:find], org: params[:organization])
    items.each do |item|
      repo_name = item.repository.full_name

      init_repo_data(repo_name, params[:repositories])

      task_attrs = {
             path: item.path,
          task_id: task[:id],
        repo_name: repo_name,
      }

      task_args = [
        params[:repositories],
        params[:tasks],
        task_attrs
      ]

      register_task(*task_args)
    end
  end

  clear(params)
  params
end

#search(text:, org:) ⇒ Object



53
54
55
# File 'lib/octofart/tasks/data_mapping.rb', line 53

def search(text:, org:)
  Octofart.client.search_code(%Q{#{text} in:file org:#{org}})[:items]
end