class Bl::Commands::Project
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/bl/commands/project.rb, line 4 def initialize(*) @config = Bl::Config.instance @url = 'projects' super end
Public Instance Methods
add(name)
click to toggle source
# File lib/bl/commands/project.rb, line 42 def add(name) res = request(:post, @url, {name: name}.merge(delete_class_options(options.to_h))) puts 'project added' print_response(res, :project) end
delete(id)
click to toggle source
# File lib/bl/commands/project.rb, line 57 def delete(id) res = request(:delete, "#{@url}/#{id}") puts 'project deleted' print_response(res, :project) end
image(id)
click to toggle source
# File lib/bl/commands/project.rb, line 106 def image(id) res = request(:get, "#{@url}/#{id}/image") ::File.open(res.body.filename, 'wb') { |f| f.write(res.body.content) } puts "#{res.body.filename} generated" end
list()
click to toggle source
# File lib/bl/commands/project.rb, line 21 def list opts = {} opts[:archived] = false unless options[:all] res = request(:get, @url, opts) print_response(res, :project) end
progress(id)
click to toggle source
# File lib/bl/commands/project.rb, line 78 def progress(id) puts '--status--' all_issues_count = count_issues(id) closed_issues_count = count_issues(id, statusId: [4]) puts "#{closed_issues_count} / #{all_issues_count}" puts '--milestone--' versions = request(:get, "projects/#{@config[:project_key]}/versions").body versions.each do |version| all_issues_count = count_issues(id, milestoneId: [version.id]) closed_issues_count = count_issues(id, milestoneId: [version.id], statusId: [4]) puts "#{version.name}: #{closed_issues_count} / #{all_issues_count}" end puts '--category--' categories = request(:get, "projects/#{@config[:project_key]}/categories").body categories.each do |category| all_issues_count = count_issues(id, categoryId: [category.id]) closed_issues_count = count_issues(id, categoryId: [category.id], statusId: [4]) puts "#{category.name}: #{closed_issues_count} / #{all_issues_count}" end end
show(id)
click to toggle source
# File lib/bl/commands/project.rb, line 29 def show(id) res = request(:get, "#{@url}/#{id}") print_response(res, :project) rescue => e puts e.message end
status(id)
click to toggle source
# File lib/bl/commands/project.rb, line 64 def status(id) all_issues_count = count_issues(id) open_issues_count = count_issues(id, statusId: [1]) in_progress_issues_count = count_issues(id, statusId: [2]) resolved_issues_count = count_issues(id, statusId: [3]) closed_issues_count = count_issues(id, statusId: [4]) puts "#{closed_issues_count} / #{all_issues_count}" puts "open: #{open_issues_count}" puts "in progress: #{in_progress_issues_count}" puts "resolved: #{resolved_issues_count}" puts "closed: #{closed_issues_count}" end
update(id)
click to toggle source
# File lib/bl/commands/project.rb, line 50 def update(id) res = request(:patch, "#{@url}/#{id}", delete_class_options(options.to_h)) puts 'project updated' print_response(res, :project) end
users(id)
click to toggle source
# File lib/bl/commands/project.rb, line 100 def users(id) res = request(:get, "#{@url}/#{id}/users") puts formatter.render(res.body, fields: USER_FIELDS) end
Private Instance Methods
count_issues(project_id, args={})
click to toggle source
# File lib/bl/commands/project.rb, line 114 def count_issues(project_id, args={}) args = { projectId: [project_id], }.merge(args) request( :get, 'issues/count', args ).body.count end