lib/dri/commands/fetch/failures.rb in dri-0.1.3 vs lib/dri/commands/fetch/failures.rb in dri-0.2.0

- old
+ new

@@ -1,39 +1,38 @@ # frozen_string_literal: true require_relative '../../command' +require_relative '../../utils/table' -require 'tty-table' - module Dri module Commands class Fetch class Failures < Dri::Command + include Dri::Utils::Table using Refinements def initialize(options) @options = options @today_iso_format = Time.now.strftime('%Y-%m-%dT00:00:00Z') end - def execute(input: $stdin, output: $stdout) + def execute(input: $stdin, output: $stdout) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength verify_config_exists title = add_color('Title', :bright_yellow) triaged = add_color('Triaged?', :bright_yellow) author = add_color('Author', :bright_yellow) url = add_color('URL', :bright_yellow) failures = [] urgent = [] - labels = [ title, triaged, author, url ] + labels = [title, triaged, author, url] triaged_counter = 0 logger.info "Fetching today's failures..." - spinner.run do - + spinner.run do # rubocop:disable Metrics/BlockLength response = api_client.fetch_failures(date: @today_iso_format, state: 'opened') if response.nil? logger.info 'Life is great, there are no new failures today!' exit 0 @@ -45,11 +44,11 @@ url = failure['web_url'] award_emoji_url = failure['_links']['award_emoji'] triaged = add_color('x', :red) emoji_awards = api_client.fetch_awarded_emojis(award_emoji_url).find do |e| - e['name'] == emoji && e['user']['username'] == username + (e['name'] == emoji) && (e['user']['username'] == username) end if emoji_awards triaged = add_color('✓', :green) triaged_counter += 1 @@ -57,27 +56,29 @@ if @options[:urgent] labels = failure['labels'] labels.each do |label| - if label.include? ('found:canary.gitlab.com' && 'found:canary.staging.gitlab.com') + if label.include?('found:canary.gitlab.com' && 'found:canary.staging.gitlab.com') urgent << [title, triaged, author, url] end end end failures << [title, triaged, author, url] end end if @options[:urgent] - table = TTY::Table.new(labels, urgent) - puts table.render(:ascii, resize: true, alignments: [:center, :center, :center, :center]) - output.puts "\nFound: #{urgent.size} urgent failures, occurring in both canary.gitlab.com and canary.staging.gitlab.com." + print_table(labels, urgent, alignments: [:left, :center, :center, :left]) + output.puts(<<~MSG) + Found: #{urgent.size} urgent failures, occurring in both canary.gitlab.com and canary.staging.gitlab.com. + MSG else - table = TTY::Table.new(labels, failures) - puts table.render(:ascii, resize: true, alignments: [:center, :center, :center, :center]) - output.puts "\nFound: #{failures.size} failures, of these #{triaged_counter} have been triaged with a #{emoji}." + print_table(labels, failures, alignments: [:left, :center, :center, :left]) + output.puts(<<~MSG) + Found: #{failures.size} failures, of these #{triaged_counter} have been triaged with a #{emoji}. + MSG end end end end end