Skip to content

Commit 294b09d

Browse files
committed
Simple CLI options (verbosity) + logger colors
1 parent 391393a commit 294b09d

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

src/logger.cr

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,35 @@
11
require "logger"
2+
require "colorize"
23

34
module Shards
5+
LOGGER_COLORS = {
6+
"ERROR" => :red,
7+
"WARN" => :orange,
8+
"INFO" => :light_green,
9+
"DEBUG" => :light_gray,
10+
}
11+
12+
@@colors = true
13+
14+
def self.colors=(value)
15+
@@colors = value
16+
end
17+
418
def self.logger
519
@@logger ||= Logger.new(STDOUT).tap do |logger|
620
logger.progname = "shards"
7-
logger.level = Logger::Severity::DEBUG
21+
logger.level = Logger::Severity::INFO
822

923
logger.formatter = Logger::Formatter.new do |severity, _datetime, _progname, message, io|
10-
io << severity[0] << ": " << message
24+
if @@colors
25+
io << if color = LOGGER_COLORS[severity.to_s]?
26+
message.colorize(color)
27+
else
28+
message
29+
end
30+
else
31+
io << severity[0] << ": " << message
32+
end
1133
end
1234
end
1335
end

src/shards.cr

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,43 @@ module Shards
88
Dir.mkdir(INSTALL_PATH) unless Dir.exists?(INSTALL_PATH)
99
end
1010

11+
require "option_parser"
1112
require "./logger"
1213
require "./errors"
1314
require "./spec"
1415
require "./manager"
1516

1617
begin
18+
OptionParser.parse! do |opts|
19+
opts.banner = "shards [options]"
20+
21+
opts.on("--no-colors", "") do
22+
Shards.colors = false
23+
end
24+
25+
opts.on("-V", "--verbose", "") do
26+
Shards.logger.level = Logger::Severity::DEBUG
27+
end
28+
29+
opts.on("-q", "--quiet", "") do
30+
Shards.logger.level = Logger::Severity::WARN
31+
end
32+
33+
opts.on("-h", "--help", "") do
34+
puts opts
35+
exit
36+
end
37+
end
38+
1739
spec = Shards::Spec.from_file(Dir.working_directory)
1840
manager = Shards::Manager.new(spec)
1941
manager.resolve
2042
manager.packages.each(&.install)
43+
44+
rescue ex : OptionParser::InvalidOption
45+
Shards.logger.fatal ex.message
46+
exit -1
47+
2148
rescue ex : Shards::Error
2249
Shards.logger.error ex.message
2350
exit -1

0 commit comments

Comments
 (0)