From f1f21ac94d72fa436e02a31aa10159ac4374f425 Mon Sep 17 00:00:00 2001 From: Sijawusz Pur Rahnama Date: Thu, 13 Jul 2023 02:17:48 +0200 Subject: [PATCH] Refactor `--rules` CLI switch output --- src/ameba/cli/cmd.cr | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/ameba/cli/cmd.cr b/src/ameba/cli/cmd.cr index d8ce4a7e..ab845865 100644 --- a/src/ameba/cli/cmd.cr +++ b/src/ameba/cli/cmd.cr @@ -5,6 +5,9 @@ require "option_parser" module Ameba::Cli extend self + private ENABLED_MARK = "✓".colorize(:green) + private DISABLED_MARK = "x".colorize(:red) + def run(args = ARGV) opts = parse_args args location_to_explain = opts.location_to_explain @@ -184,13 +187,34 @@ module Ameba::Cli end private def print_rules(config) - config.rules.each do |rule| - puts "%s [%s] - %s" % { - rule.name.colorize(:white), - rule.severity.symbol.to_s.colorize(:green), - rule.description.colorize(:dark_gray), + rules = config.rules.to_h do |rule| + name = rule.name.split('/') + name = "%s/%s" % { + name[0...-1].join('/').colorize(:light_gray), + name.last.colorize(:white), } + {name, rule} end + longest_name = rules.max_of(&.first.size) + + rules.group_by(&.last.group).each do |group, group_rules| + puts "— %s" % group.colorize(:light_blue).underline + puts + group_rules.each do |name, rule| + puts " %s [%s] %s %s" % { + rule.enabled? ? ENABLED_MARK : DISABLED_MARK, + rule.severity.symbol.to_s.colorize(:green), + name.ljust(longest_name), + rule.description.colorize(:dark_gray), + } + end + puts + end + + puts "Total rules: %s / %s enabled" % { + rules.size.to_s.colorize(:light_blue), + rules.count(&.last.enabled?).to_s.colorize(:light_blue), + } exit 0 end end