cch 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzM2NjA2YTU3MzRmYTQxYWE1NzZiYzBmOWFmNmM2ZmNkMjllMTI2ZA==
4
+ NDUyZGFiOTQ3YTc2MmViMTgyYjIwMjZmZmMzZThmZmI3NmYxNjIyMQ==
5
5
  data.tar.gz: !binary |-
6
- NjcwNTVjOGM1ZmYzNzhlZjA5MTVkMmNkMzJhNGU1ZjJkOWJhMGQxNQ==
6
+ ZjhiMDM2Mzc5Y2Y0NjQ5MTY3MzMxMTRhNThhM2VjNmY0NzE5YzFlYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Nzc1MGFjOTI1ZDliZmE1NTU1ZmU0MTdlZjkwMDIyZDEzZWExZDQ5NTYwZDI3
10
- OWRiNDVjODZjZTBmZTJjZDdlMjRhZWRmN2NjYTE2NWMzMjM0NDM0YWM2Njc3
11
- NGQ2YmMyNDVhOGU0Yjc3MmE1MmMwNGFmYjdjM2M3YWNmYmEwYTE=
9
+ NDkwZWExYzQ0ZjIwNTMwNjI0NTBjMDM5NmYwNzI1NDU1MjMwODE2ZjBhYzE2
10
+ NjhmY2MzNDI2NmY5ZTc5ZThhNzQ1OGEyMGFiZDQ3ODM4YzJjNmZjYzZiOTE1
11
+ MTZkYTQ1MGJlZmNmMjg5M2RhM2E5MjU5NjNhNDgwZDQ4NTE0ZGE=
12
12
  data.tar.gz: !binary |-
13
- M2MwNDBlNDNkZjU3YjdkMDQ4MTM0ODc5MDRmOTI3MWEyMjgyOGNiNTJlMDdi
14
- MzBhZjFkMjAxYjg2ZjE4OWYxY2M2ODJmYmIzZTIzODU1MWVjOWRmYTgyZGQ1
15
- ZmI4ZDI5M2QwM2U3MTA0ZDE0NzQ3ZWU4ZWQwYzRmMjY5ZWE4ODM=
13
+ NTZlMGY3Yzc2NjY3OTAxOWMzNDE5NGViZDcwN2M4NGNkMjk0NmYwZTU5MDg5
14
+ MmQ3OGYxMjExZWZiZGEzMzdiY2E4OTczNGI5NmQzNmNhZTg0YmQxYWZjYTA5
15
+ MWFlN2FjNjZlNDRlMjQ5ZTgzNTdlOTNjNTM0NzliNzc1MjNmZDA=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cch (0.3.0)
4
+ cch (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -16,14 +16,16 @@ CCH - Check on changes for ruby projects
16
16
  gem install cch
17
17
  ```
18
18
 
19
- Create a `Cchfile` on your project folder:
19
+ Generates a `Cchfile` for project configuration:
20
+
21
+ ```shell
22
+ cch_install
23
+ ```
24
+
25
+ Configure through the `Cchfile` the way you want to run **cch**:
20
26
 
21
27
  ```ruby
22
- Cch::Setup.tap do |setup|
23
- setup.run :rubocop
24
- setup.run :haml_lint
25
- setup.run :rspec
26
- end
28
+ Cch.setup.run [:rubocop, :haml_lint, :rspec]
27
29
  ```
28
30
 
29
31
  ## Usage
@@ -32,6 +34,12 @@ end
32
34
  cch
33
35
  ```
34
36
 
37
+ Or on run time, you can specify the runners:
38
+
39
+ ```shell
40
+ cch rspec rubocop
41
+ ```
42
+
35
43
  ## Development
36
44
 
37
45
  1. checking out the repo
data/bin/cch_install ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
5
+ $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
6
+
7
+ File.open('Cchfile', 'w') do |file|
8
+ file.write <<STRING
9
+ # Cch.setup.run [:rubocop, :rspec]
10
+ STRING
11
+ end
data/cch.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  f.match(%r{^(test|spec|features)/}) || f.match(/^Cchfile$/)
27
27
  end
28
28
  spec.bindir = 'bin'
29
- spec.executables = %w(cch)
29
+ spec.executables = %w(cch cch_install)
30
30
  spec.require_paths = ['lib']
31
31
 
32
32
  spec.add_development_dependency 'bundler', '~> 1.10'
@@ -6,9 +6,7 @@ module Cch
6
6
  find_matched_files(files, pattern, transform)
7
7
  end
8
8
 
9
- filtered_files = existing_files(filtered_files)
10
- puts "=> #{filtered_files.size.to_s.color(:yellow)} files=#{filtered_files}"
11
- filtered_files
9
+ existing_files(filtered_files)
12
10
  end
13
11
 
14
12
  private
@@ -14,7 +14,7 @@ module Cch
14
14
  private
15
15
 
16
16
  def log_command(command)
17
- puts "=> command='#{command}'" if Setup.debug
17
+ Cch.logger.debug("command='#{command}'")
18
18
  end
19
19
  end
20
20
  end
@@ -1,4 +1,4 @@
1
- Cch::Setup.tap do |setup|
1
+ Cch.setup.tap do |setup|
2
2
  setup.add_runner :rubocop do |runner|
3
3
  runner.watch(/\.rb$/)
4
4
  end
@@ -1,6 +1,4 @@
1
- Cch::Setup.tap do |setup|
2
- setup.debug = false
3
-
1
+ Cch.setup.tap do |setup|
4
2
  setup.watcher_commands = [
5
3
  'git diff --name-only',
6
4
  'git diff --name-only --staged',
data/lib/cch/logger.rb ADDED
@@ -0,0 +1,24 @@
1
+ module Cch
2
+ class Logger
3
+ attr_accessor :threshold, :implementation
4
+
5
+ def initialize(threshold, implementation)
6
+ @threshold = threshold
7
+ @implementation = implementation
8
+ end
9
+
10
+ Loggers::Level.all.each do |level_name, level|
11
+ define_method(level_name) do |message|
12
+ log(level, message)
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def log(level, message)
19
+ return unless implementation && level.allowed?(threshold)
20
+
21
+ implementation.log(level, message)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,40 @@
1
+ module Cch
2
+ module Loggers
3
+ class Level
4
+ LEVELS = [:debug, :info, :error]
5
+
6
+ def self.all
7
+ return @levels if @levels
8
+
9
+ @levels = {}
10
+ LEVELS.each { |level| @levels[level] = new(level) }
11
+ @levels
12
+ end
13
+
14
+ attr_reader :name
15
+
16
+ def initialize(name)
17
+ @name = name
18
+ end
19
+
20
+ def allowed?(threshold)
21
+ LEVELS.index(threshold) <= LEVELS.index(name)
22
+ end
23
+
24
+ def to_s
25
+ name.to_s.upcase.color(color)
26
+ end
27
+
28
+ private
29
+
30
+ def color
31
+ case name
32
+ when :debug then :pink
33
+ when :info then :cyan
34
+ when :error then :red
35
+ else :yellow
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,11 @@
1
+ module Cch
2
+ module Loggers
3
+ class Stdout
4
+ def log(level, message, time = Time.new)
5
+ log_message = "=> [#{time}] [#{level}] - #{message}"
6
+ puts log_message
7
+ log_message
8
+ end
9
+ end
10
+ end
11
+ end
data/lib/cch/runner.rb CHANGED
@@ -7,7 +7,7 @@ module Cch
7
7
  attr_accessor :command, :on
8
8
 
9
9
  def self.all
10
- Setup.runners.values
10
+ Cch.setup.runners.values
11
11
  end
12
12
 
13
13
  def self.where(options = {})
@@ -31,7 +31,7 @@ module Cch
31
31
  end
32
32
 
33
33
  def run(files)
34
- puts "=> running #{name.to_s.color(:black, :green)}"
34
+ Cch.logger.info("running #{name.to_s.color(:black, :green)}")
35
35
  filtered_files = filter_files(files, patterns)
36
36
  return unless run?(filtered_files)
37
37
 
@@ -39,6 +39,7 @@ module Cch
39
39
  end
40
40
 
41
41
  def run?(files)
42
+ Cch.logger.info("#{files.size.to_s.color(:yellow)} files=#{files}")
42
43
  files.size > 0
43
44
  end
44
45
  end
data/lib/cch/setup.rb CHANGED
@@ -1,12 +1,15 @@
1
1
  module Cch
2
2
  class Setup
3
3
  class << self
4
- ATTRIBUTES = [:debug, :watcher_commands, :runners]
4
+ ATTRIBUTES = [:watcher_commands, :runners]
5
5
  attr_accessor(*ATTRIBUTES)
6
6
 
7
7
  def configure
8
+ require 'cch/config/watchers'
9
+ require 'cch/config/runners'
10
+
8
11
  load_setup
9
- puts "=> setup\n#{inspect}" if debug
12
+ Cch.logger.debug("setup\n#{inspect}")
10
13
  self
11
14
  end
12
15
 
@@ -17,11 +20,11 @@ module Cch
17
20
  def add_runner(runner, options = {})
18
21
  @runners ||= {}
19
22
  @runners[runner] = Runner.new(runner, options)
20
- yield @runners[runner] if block_given?
23
+ yield @runners.fetch(runner) if block_given?
21
24
  end
22
25
 
23
- def run(runner)
24
- runners.fetch(runner).on = true
26
+ def run(runners)
27
+ Array(runners).each { |runner| @runners.fetch(runner).on = true }
25
28
  end
26
29
 
27
30
  private
data/lib/cch/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cch
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
data/lib/cch/watcher.rb CHANGED
@@ -7,12 +7,12 @@ module Cch
7
7
  end
8
8
 
9
9
  def initialize(commands = nil)
10
- @commands = commands || Setup.watcher_commands
10
+ @commands = commands || Cch.setup.watcher_commands
11
11
  end
12
12
 
13
13
  def files
14
14
  files = @commands.flat_map { |command| backtiq_command(command) }.compact.sort.uniq
15
- puts "=> watched files='#{files}'" if Setup.debug
15
+ Cch.logger.info("watched files='#{files}'")
16
16
  files
17
17
  end
18
18
  end
data/lib/cch.rb CHANGED
@@ -2,21 +2,30 @@ require 'yaml'
2
2
 
3
3
  require 'cch/extensions/string'
4
4
  require 'cch/version'
5
- require 'cch/setup'
6
5
  require 'cch/commands/shell'
7
6
  require 'cch/commands/file_system'
8
7
  require 'cch/watcher'
9
8
  require 'cch/runner'
10
-
11
- require 'cch/config/watchers'
12
- require 'cch/config/runners'
9
+ require 'cch/loggers/level'
10
+ require 'cch/loggers/stdout'
11
+ require 'cch/logger'
12
+ require 'cch/setup'
13
13
 
14
14
  module Cch
15
15
  class << self
16
- def run(args = [])
17
- puts "=> running cch with args='#{args}'"
16
+ def logger
17
+ @logger ||= Logger.new(:info, Loggers::Stdout.new)
18
+ end
19
+
20
+ def setup
21
+ return @setup if @setup
22
+ @setup = Setup
18
23
  Setup.configure
24
+ @setup
25
+ end
19
26
 
27
+ def run(args = [])
28
+ logger.info("running cch with args='#{args}'")
20
29
  files = Watcher.files
21
30
  runners(args).each { |runner| runner.run(files) }
22
31
  end
@@ -24,9 +33,7 @@ module Cch
24
33
  private
25
34
 
26
35
  def runners(names)
27
- filter = { on?: true }
28
- filter.merge!(name: names) if names.size > 0
29
- Runner.where(filter)
36
+ Runner.where(on?: true, name: names)
30
37
  end
31
38
  end
32
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinicius Ferreira Negrisolo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-16 00:00:00.000000000 Z
11
+ date: 2015-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,6 +99,7 @@ email:
99
99
  - vinicius.negrisolo@gmail.com
100
100
  executables:
101
101
  - cch
102
+ - cch_install
102
103
  extensions: []
103
104
  extra_rdoc_files: []
104
105
  files:
@@ -115,6 +116,7 @@ files:
115
116
  - README.md
116
117
  - Rakefile
117
118
  - bin/cch
119
+ - bin/cch_install
118
120
  - bin/console
119
121
  - bin/setup
120
122
  - cch.gemspec
@@ -124,6 +126,9 @@ files:
124
126
  - lib/cch/config/runners.rb
125
127
  - lib/cch/config/watchers.rb
126
128
  - lib/cch/extensions/string.rb
129
+ - lib/cch/logger.rb
130
+ - lib/cch/loggers/level.rb
131
+ - lib/cch/loggers/stdout.rb
127
132
  - lib/cch/runner.rb
128
133
  - lib/cch/setup.rb
129
134
  - lib/cch/version.rb