Skip to content

Commit

Permalink
Merge 5088999 into 8f3044d
Browse files Browse the repository at this point in the history
  • Loading branch information
VidaZing committed Aug 26, 2018
2 parents 8f3044d + 5088999 commit b34a040
Show file tree
Hide file tree
Showing 9 changed files with 166 additions and 145 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Application
logs/

# General
*.gem
*.rbc
/.config
Expand Down
7 changes: 7 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
AllCops:
TargetRubyVersion: 2.5

Metrics/BlockLength:
Exclude:
- '**/*.rake'
- 'test/**/*.rb'
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ language: ruby

rvm:
- 2.5.1
- 2.2.0
before_install:
- gem install bundler -v 1.16.1
- gem install bundler -v 1.16.4

script:
- bundle exec rake build
Expand Down
16 changes: 13 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ task :clean do
system 'rm -f *.gem Gemfile.lock'
end

desc "Build #{GEM_NAME_VERSION}"
task "build-dev": :clean do
puts "Building #{GEM_NAME_VERSION}".blue
system "gem build #{GEM_NAME}.gemspec"
end

desc "Build #{GEM_NAME_VERSION}"
task build: :clean do
puts "Building #{GEM_NAME_VERSION}".blue
Expand Down Expand Up @@ -72,13 +78,16 @@ Rake::TestTask.new do |t|
t.verbose = true
end

namespace :loop do
namespace :loop do # rubocop:disable Metrics/BlockLength
def looper?
puts "Checking for 'fswatch' to monitor files".blue

has_fswatch = !`which fswatch`.empty?

abort('fswatch is NOT installed. Visit https://github.com/emcrisostomo/fswatch'.bright.red) unless has_fswatch
unless has_fswatch
abort('fswatch is NOT installed. Visit https://github.com/emcrisostomo/fswatch'.bright.red)
end

puts('fswatch is installed.'.bright.green) if has_fswatch
end

Expand All @@ -90,7 +99,8 @@ namespace :loop do
system format(looping_cmd.to_s, cmd)
end

IGNORED_MESSAGE = 'Ignores .git/, logs/, .yardoc/, and gems created. Watches every 1 seconds'
IGNORED_MESSAGE = 'Ignores .git/, logs/, .yardoc/, and gems created.'\
'Watches every 1 seconds'

desc 'Repeatedly installs the gem on file changes'
task :install do
Expand Down
44 changes: 28 additions & 16 deletions bin/vidazing_logger
Original file line number Diff line number Diff line change
Expand Up @@ -6,39 +6,51 @@ require 'vidazing_logger'
require 'optparse'
require 'ostruct'

# Handles command line options for the vidazing_logger binary.
# See `vidazing_logger --help`
#
# @since 0.1.0
class VidazingOptions
LEVEL_ALIASES = { 'd' => 'debug', 'i' => 'info', 'w' => 'warn', 'e' => 'error', 'f' => 'fatal' }.freeze
attr_reader :level, :clean

def self.parse(args)
options = OpenStruct.new
options.level = 'info'
options.clean = false
def initialize
@level = 'info'
@clean = false
@options_parser = create_options_parser
end

options_parser = OptionParser.new do |opts|
def create_options_parser # rubocop:disable Metrics/MethodLength
OptionParser.new do |opts|
opts.banner = 'Usage: vidazing_logger [options] "Message"'

opts.separator ''
opts.separator 'Specific options:'

level_list = LEVEL_ALIASES.flatten.join(',')
opts.on('-l', '--level LEVEL', LEVEL_ALIASES.values, LEVEL_ALIASES, 'Select log level',
" (#{level_list})") do |level|
options.level = level
level_aliases = { 'd' => 'debug', 'i' => 'info', 'w' => 'warn',
'e' => 'error', 'f' => 'fatal' }.freeze
level_list = level_aliases.flatten.join(',')

opts.on('-l', '--level LEVEL', level_aliases.values, level_aliases,
'Select log level', " (#{level_list})") do |level|

@level = level
end

opts.on_tail('-c', '--clean', 'Remove the logs/ directory') do
options.clean = true
@clean = true
end
end
end

options_parser.parse!(args)
options
def parse(args)
@options_parser.parse!(args)
end
end

options = VidazingOptions.parse(ARGV)
vidazing_options = VidazingOptions.new
vidazing_options.parse(ARGV)

if options.clean
if vidazing_options.clean
puts 'Cleaning the logs/ directory'
VidazingLogger.clean
end
Expand All @@ -47,5 +59,5 @@ unless ARGV.empty?
message = ARGV.join(' ')

log = VidazingLogger.logger
log.public_send(options.level, message)
log.public_send(vidazing_options.level, message)
end
98 changes: 50 additions & 48 deletions lib/vidazing_logger/appenders/stderr.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,58 +4,60 @@

# Determines how to log messages. Attaches to Logging.logger
# @api private
module VidazingLogger::Appenders
# Appender writing to STDERR and 'logs/error.log'
# @api private
module Stderr
class << self
private

# ----- BUILD STDERR + LOG -----

# Logging holds the color scheme reference
ERROR_LOG_COLOR_SCHEME = 'bright_error'
Logging.color_scheme(
ERROR_LOG_COLOR_SCHEME,
levels: {
info: :green,
warn: :yellow,
error: :red,
fatal: %i[white on_red]
},
date: :red,
logger: :cyan,
message: :magenta
)

def readable_error_layout_pattern
Logging.layouts.pattern \
pattern: '[%d] %-5l %c: %m\n',
# ISO8601 without the 'T'
date_pattern: '%Y-%m-%d %H:%M:%S',
color_scheme: ERROR_LOG_COLOR_SCHEME
end
module VidazingLogger
module Appenders
# Appender writing to STDERR and 'logs/error.log'
# @api private
module Stderr
class << self
APPENDER_STDERR = 'STDERR'
def stderr_appender
Logging.appenders.stderr \
APPENDER_STDERR,
layout: readable_error_layout_pattern,
level: :error
end

APPENDER_STDERR = 'STDERR'
def stderr_appender
Logging.appenders.stderr \
APPENDER_STDERR,
layout: readable_error_layout_pattern,
level: :error
end
def error_log_appender(log_dir)
error_log_path = "#{log_dir}/error.log"

appender_error_log = error_log_path
Logging.appenders.rolling_file \
appender_error_log,
layout: readable_error_layout_pattern,
age: 'daily',
keep: 7,
level: :error

Logging.appenders[appender_error_log]
end

private

def error_log_appender(log_dir)
error_log_path = "#{log_dir}/error.log"
# ----- BUILD STDERR + LOG -----

appender_error_log = error_log_path
Logging.appenders.rolling_file \
appender_error_log,
layout: readable_error_layout_pattern,
age: 'daily',
keep: 7,
level: :error
# Logging holds the color scheme reference
ERROR_LOG_COLOR_SCHEME = 'bright_error'
Logging.color_scheme(
ERROR_LOG_COLOR_SCHEME,
levels: {
info: :green,
warn: :yellow,
error: :red,
fatal: %i[white on_red]
},
date: :red,
logger: :cyan,
message: :magenta
)

Logging.appenders[appender_error_log]
def readable_error_layout_pattern
Logging.layouts.pattern \
pattern: '[%d] %-5l %c: %m\n',
# ISO8601 without the 'T'
date_pattern: '%Y-%m-%d %H:%M:%S',
color_scheme: ERROR_LOG_COLOR_SCHEME
end
end
end
end
Expand Down
106 changes: 54 additions & 52 deletions lib/vidazing_logger/appenders/stdout.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,67 +2,69 @@

require 'logging'

module VidazingLogger::Appenders
# Appender writing to STDOUT and 'logs/build.log'
# @api private
module Stdout
class << self
private
module VidazingLogger
module Appenders
# Appender writing to STDOUT and 'logs/build.log'
# @api private
module Stdout
class << self
APPENDER_STDOUT = 'STDOUT'
def stdout_appender
Logging.appenders.stdout \
APPENDER_STDOUT,
layout: readable_layout_pattern,
filters: stdout_levels

#----- BUILD STDOUT + LOG -----
Logging.appenders[APPENDER_STDOUT]
end

# Logging holds the color scheme reference
LOG_COLOR_SCHEME = 'bright'
Logging.color_scheme(
LOG_COLOR_SCHEME,
levels: {
info: :green,
warn: :yellow,
error: :red,
fatal: %i[white on_red]
},
date: :blue,
logger: :cyan,
message: :magenta
)
def build_log_appender(log_dir)
build_log_path = "#{log_dir}/build.log"

def readable_layout_pattern
Logging.layouts.pattern \
pattern: '[%d] %-5l %c: %m\n',
# ISO8601 without the 'T'
date_pattern: '%Y-%m-%d %H:%M:%S',
color_scheme: LOG_COLOR_SCHEME
end
appender_build_log = build_log_path
Logging.appenders.rolling_file \
appender_build_log,
layout: readable_layout_pattern,
age: 'daily',
keep: 7,
filters: stdout_levels

def stdout_levels
Logging::Filters::Level.new \
:debug,
:info,
:warn
end
Logging.appenders[appender_build_log]
end

APPENDER_STDOUT = 'STDOUT'
def stdout_appender
Logging.appenders.stdout \
APPENDER_STDOUT,
layout: readable_layout_pattern,
filters: stdout_levels
private

Logging.appenders[APPENDER_STDOUT]
end
#----- BUILD STDOUT + LOG -----

def build_log_appender(log_dir)
build_log_path = "#{log_dir}/build.log"
# Logging holds the color scheme reference
LOG_COLOR_SCHEME = 'bright'
Logging.color_scheme(
LOG_COLOR_SCHEME,
levels: {
info: :green,
warn: :yellow,
error: :red,
fatal: %i[white on_red]
},
date: :blue,
logger: :cyan,
message: :magenta
)

appender_build_log = build_log_path
Logging.appenders.rolling_file \
appender_build_log,
layout: readable_layout_pattern,
age: 'daily',
keep: 7,
filters: stdout_levels
def readable_layout_pattern
Logging.layouts.pattern \
pattern: '[%d] %-5l %c: %m\n',
# ISO8601 without the 'T'
date_pattern: '%Y-%m-%d %H:%M:%S',
color_scheme: LOG_COLOR_SCHEME
end

Logging.appenders[appender_build_log]
def stdout_levels
Logging::Filters::Level.new \
:debug,
:info,
:warn
end
end
end
end
Expand Down
20 changes: 0 additions & 20 deletions test/test_vidazing_logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,23 +32,3 @@ def teardown
FileUtils.rm_rf(LOG_DIR)
end
end

# describe Thing do
# describe '.add_task' do
# let(:repo) { Thing.repo }

# it 'adds a new task' do
# expect { Thing.add_task('speak @ Guru-SP') }.to change{ repo.count }.by(1)
# end

# context 'when title is blank' do
# subject(:add_blank_task) { Thing.add_task('') }

# it 'does not persist' do
# expect { add_blank_task }.to_not change{ repo.count }
# end

# it { eq(false) }
# end
# end
# end

0 comments on commit b34a040

Please sign in to comment.