Class: Gitcamp::Github::Issue

Inherits:
Object
  • Object
show all
Defined in:
lib/gitcamp/github/issue.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Issue

Returns a new instance of Issue.



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/gitcamp/github/issue.rb', line 6

def initialize(options = {})
  unless options[:todo]
    raise ArgumentError, 'no Basecamp todo given'
  end

  @github = options[:github]
  @repo = options[:repo]
  @milestone = options[:milestone]
  @todo = options[:todo]
  @todolist = options[:todolist]

  @title = @todo.content.gsub(/#\d+\s+/, '')
end

Instance Attribute Details

#githubObject (readonly)

Returns the value of attribute github.



4
5
6
# File 'lib/gitcamp/github/issue.rb', line 4

def github
  @github
end

#issueObject (readonly)

Returns the value of attribute issue.



4
5
6
# File 'lib/gitcamp/github/issue.rb', line 4

def issue
  @issue
end

#milestoneObject (readonly)

Returns the value of attribute milestone.



4
5
6
# File 'lib/gitcamp/github/issue.rb', line 4

def milestone
  @milestone
end

#repoObject (readonly)

Returns the value of attribute repo.



4
5
6
# File 'lib/gitcamp/github/issue.rb', line 4

def repo
  @repo
end

#titleObject (readonly)

Returns the value of attribute title.



4
5
6
# File 'lib/gitcamp/github/issue.rb', line 4

def title
  @title
end

#todoObject (readonly)

Returns the value of attribute todo.



4
5
6
# File 'lib/gitcamp/github/issue.rb', line 4

def todo
  @todo
end

#todolistObject (readonly)

Returns the value of attribute todolist.



4
5
6
# File 'lib/gitcamp/github/issue.rb', line 4

def todolist
  @todolist
end

Instance Method Details

#saveObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/gitcamp/github/issue.rb', line 20

def save
  issues = @github.list_issues(repo, milestone: milestone.number)
  @issue = issues.find { |issue| issue.title == title }

  if @issue
    @issue = @github.update_issue(repo, issue.number, issue.title, issue.body, milestone: milestone.number, labels: 'basecamp')
  else
    @issue = @github.create_issue(repo, title, '', milestone: milestone.number, labels: 'basecamp')

    todo = Gitcamp::Basecamp::Todo.new(list: todolist, issue: issue, find_by_title: true)
    todo.save
  end

  say "Processed issue '#{issue.title}' in GitHub"
end