cch 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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