Class: GitHub
- Inherits:
-
Object
show all
- Defined in:
- lib/tasks/manage-issues.rb
Defined Under Namespace
Classes: Comment, HashClass, Issue
Constant Summary
- STATES =
{
'IMPORTANT-READ' => [:keep, :no_feedback],
'on-hold' => [:keep, :no_feedback],
'in-progress' => [:keep, :no_feedback],
'feedback-required' => :keep,
'feature-request' => [:keep, :no_feedback],
'release-blocker' => :keep,
'no-feedback' => :keep
}
- CONFIGFILE =
File.join(File.dirname(__FILE__), File.basename(__FILE__, File.extname(__FILE__))) + '.rc'
- CONFIG =
File.exists?(CONFIGFILE) ? YAML::load(File.open(CONFIGFILE)) : {}
- ROOT =
'http://github.com/api/v2/yaml/'
Class Method Summary
(collapse)
Instance Method Summary
(collapse)
Constructor Details
- (GitHub) initialize(user, repo)
119
120
121
122
|
# File 'lib/tasks/manage-issues.rb', line 119
def initialize(user, repo)
@user = user
@repo = repo
end
|
Class Method Details
+ (Object) states(cond)
180
181
182
|
# File 'lib/tasks/manage-issues.rb', line 180
def self.states(cond)
return GitHub::STATES.keys.select{|k| GitHub::STATES[k] == cond || (GitHub::STATES[k].is_a?(Array) && GitHub::STATES[k].include?(cond))}
end
|
Instance Method Details
- (Object) committers
176
177
178
|
# File 'lib/tasks/manage-issues.rb', line 176
def committers
return ['friflaj']
end
|
- (Object) get(url)
124
125
126
127
128
129
130
131
132
133
134
135
136
|
# File 'lib/tasks/manage-issues.rb', line 124
def get(url)
url = url.gsub(/:user/, @user).gsub(/:repo/, @repo)
url = "#{GitHub::ROOT}#{url}"
data = Net::HTTP.get(URI.parse(url))
begin
return YAML::load(data)
rescue
File.open('/tmp/github-issues.txt', 'w') do |f|
f.write(data)
end
raise "Failed to load parsable data from #{url}, data in /tmp/github-issues.txt"
end
end
|
- (Object) issue(id)
151
152
153
|
# File 'lib/tasks/manage-issues.rb', line 151
def issue(id)
return Issue.new(self, get("issues/show/:user/:repo/#{id}")['issue'])
end
|
- (Object) issues(state = :open)
147
148
149
|
# File 'lib/tasks/manage-issues.rb', line 147
def issues(state = :open)
return get("issues/list/:user/:repo/#{state}")['issues'].collect { |i| Issue.new(self, i) }
end
|
- (Object) labels(which = :all)
155
156
157
158
159
160
|
# File 'lib/tasks/manage-issues.rb', line 155
def labels(which = :all)
return get('issues/labels/:user/:repo')['labels'] if which == :all
return issues.collect{|i| i.labels}.flatten.compact.uniq if which == :active
return (issues.collect{|i| i.labels(:calculate)}.flatten + GitHub.states(:keep)).compact.uniq if which == :calculate
raise "Unexpected selector #{which.inspect}"
end
|
- (Object) labels=(new)
162
163
164
165
166
167
168
169
170
171
172
173
174
|
# File 'lib/tasks/manage-issues.rb', line 162
def labels=(new)
old = labels
remove = old - new
add = new - old
remove.each {|l|
post("issues/label/remove/:user/:repo/#{l}")
}
add.each {|l|
post("issues/label/add/:user/:repo/#{l}")
}
end
|
- (Object) post(url)
138
139
140
141
142
143
144
145
|
# File 'lib/tasks/manage-issues.rb', line 138
def post(url)
auth = {'login' => GitHub::CONFIG['username'], 'token' => GitHub::CONFIG['token']}
url = url.gsub(/:user/, @user).gsub(/:repo/, @repo)
url = "#{GitHub::ROOT}#{url}"
r = Net::HTTP.post_form(URI.parse(url), auth)
return r.body if r.is_a?(Net::HTTPSuccess)
raise "#{url}: #{r.message} (#{auth.inspect})"
end
|