Class: Octomine::Importer
- Inherits:
-
Object
- Object
- Octomine::Importer
- Defined in:
- lib/octomine/importer.rb
Instance Method Summary collapse
- #import_issues(project_id, tracker_id, user_map, issues, closed_status_id = nil, open_status_id = nil) ⇒ Object
- #import_users(user_map, default_user, create_missing_users = true) ⇒ Object
-
#initialize(logger) ⇒ Importer
constructor
A new instance of Importer.
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. = user_map[gh_issue.user.login].id # Tracker is required rm_issue.tracker_id = tracker_id rm_issue.assigned_to_id = user_map[gh_issue.assignee.login].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.}" 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 |gh_login, rm_login| rm_login ||= gh_login unless user = User.find_by_login(rm_login) if create_missing_users logger.info "Creating missing user #{rm_login}" user = User.new user.login = rm_login user.firstname = rm_login.capitalize user.lastname = 'On GitHub' user.mail = "#{gh_login}@example.com" logger.warn("Errors occurred while saving user '#{rm_login}' #{user.errors.}") unless user.save end user ||= default_user end [gh_login, user] end.flatten! Hash[*user_map] end |