Class: Octomine::Importer

Inherits:
Object
  • Object
show all
Defined in:
lib/octomine/importer.rb

Instance Method Summary collapse

Constructor Details

#initialize(logger) ⇒ Importer

Returns a new instance of Importer.



4
5
6
# File 'lib/octomine/importer.rb', line 4

def initialize logger
  @logger = logger
end

Instance Method Details

#import_issues(project_id, tracker_id, user_map, issues, closed_status_id = nil, open_status_id = nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/octomine/importer.rb', line 28

def import_issues project_id, tracker_id, user_map, issues, closed_status_id = nil, open_status_id = nil
  logger.debug "Number of issues to import is #{issues.length}"
  issues.each do |gh_issue|
    logger.debug "Importing issue #{gh_issue.number} #{gh_issue.title}"
    if gh_issue.pull_request && gh_issue.pull_request.empty? && gh_issue.pull_request.diff_url && !gh_issue.pull_request.diff_url.empty?
      logger.debug "Skipping pull request"
      logger.debug gh_issue.pull_request.inspect
      next
    end
    rm_issue = Issue.find_by_id(gh_issue.number) || Issue.new
    rm_issue.id          = gh_issue.number
    # Project is required
    rm_issue.project_id  = project_id
    # Subject is required
    rm_issue.subject     = gh_issue.title
    rm_issue.description = gh_issue.body
    # Author is required
    rm_issue.author_id   = user_map[gh_issue.user.].id
    # Tracker is required
    rm_issue.tracker_id  = tracker_id

    rm_issue.assigned_to_id = user_map[gh_issue.assignee.].id if gh_issue.assignee
    rm_issue.status_id = closed_status_id if gh_issue.state == 'closed'
    rm_issue.status_id = open_status_id   if gh_issue.state == 'open'
    rm_issue.created_on = gh_issue.created_at

    if rm_issue.save
      logger.debug 'Issue successfully saved'
    else
      logger.debug "Error ocured while saving issue #{rm_issue.errors.messages}"
    end

    if gh_issue.comments && gh_issue.comments.to_i > 0
      logger.warn 'TODO: import comments'
    end
  end
end

#import_users(user_map, default_user, create_missing_users = true) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/octomine/importer.rb', line 8

def import_users user_map, default_user, create_missing_users = true
  user_map = user_map.map do |, |
     ||= 
    unless user = User.()
      if create_missing_users
        logger.info "Creating missing user #{}"
        user = User.new
        user. = 
        user.firstname = .capitalize
        user.lastname  = 'On GitHub'
        user.mail      = "#{}@example.com"
        logger.warn("Errors occurred while saving user '#{}' #{user.errors.messages}") unless user.save
      end
      user ||= default_user
    end
    [, user]
  end.flatten!
  Hash[*user_map]
end