checker 0.0.4 → 0.0.4.1

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.
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'checker'
3
- s.version = '0.0.4'
3
+ s.version = '0.0.4.1'
4
4
  s.date = '2012-07-09'
5
5
  s.summary = "Syntax checker for various files"
6
6
  s.description = "A collection of modules which every is designed to check syntax for specific files."
@@ -2,7 +2,7 @@ require 'colorize'
2
2
 
3
3
  require 'checker/core_ext'
4
4
 
5
- require "checker/modules/all"
5
+ require "checker/modules/base"
6
6
  require "checker/modules/ruby"
7
7
  require "checker/modules/haml"
8
8
  require "checker/modules/pry"
@@ -1,11 +1,56 @@
1
1
  require 'checker'
2
- require 'checker/cli/execute'
3
2
 
4
3
  module Checker
5
- module Modules; end
6
-
7
4
  class CLI
5
+ class << self
6
+ def execute
7
+ if ARGV.size == 0
8
+ modules = get_modules_to_check
9
+ else
10
+ modules = ARGV.map(&:downcase)
11
+ end
12
+
13
+ if modules.empty? || modules.include?('all')
14
+ modules = available_modules
15
+ end
16
+
17
+ check_module_availability(modules) do |result|
18
+ puts "Modules not available: #{result.join(", ")}.\n"
19
+ puts "Available: all, #{available_modules.join(", ")}\n"
20
+ puts "Check your git config checker.check\n"
21
+ exit 1
22
+ end
23
+
24
+ checked = []
25
+ files = modified_files
26
+ modules.each do |mod|
27
+ klass = "Checker::Modules::#{mod.downcase.capitalize}".constantize
28
+ checked << klass.new(files.dup).check
29
+ end
30
+ exit (checked.all_true? ? 0 : 1)
31
+ end
32
+
33
+ private
34
+ def available_modules
35
+ Checker::Modules.constants.map(&:to_s).map(&:downcase) - ['base']
36
+ end
37
+
38
+ def check_module_availability(modules)
39
+ result = modules - available_modules
40
+ unless result.empty?
41
+ if block_given?
42
+ yield(result)
43
+ end
44
+ end
45
+ end
46
+
47
+ def get_modules_to_check
48
+ `git config checker.check`.chomp.split(",").map(&:strip)
49
+ end
8
50
 
9
- include Execute
51
+ def modified_files
52
+ @modified_files ||= `git status --porcelain | egrep "^(A |M |R ).*" | awk ' { if ($3 == "->") print $4; else print $2 } '`.split
53
+ end
54
+ end
10
55
  end
11
56
  end
@@ -1,5 +1,3 @@
1
- require 'checker/utils'
2
-
3
1
  class CoreExt
4
2
  def self.constantize(camel_cased_word)
5
3
  names = camel_cased_word.split('::')
@@ -0,0 +1,124 @@
1
+ module Checker
2
+ module Modules
3
+ class Base < Struct.new(:files)
4
+ def check
5
+ print_module_header
6
+ prepare_check
7
+ check_executable or return true
8
+ select_proper_files
9
+ check_all_files
10
+ valid?
11
+ end
12
+
13
+ def valid?
14
+ @results.all_true?
15
+ end
16
+
17
+ private
18
+
19
+ def print_module_header
20
+ color "[ #{name} ]\n", :light_blue
21
+ end
22
+
23
+ def prepare_check
24
+ @files_to_check = []
25
+ @results = []
26
+ end
27
+
28
+ def check_executable
29
+ if check_for_executable
30
+ true
31
+ else
32
+ color "executable not found, skipping...\n", :magenta
33
+ false
34
+ end
35
+ end
36
+
37
+ def check_for_executable
38
+ true
39
+ end
40
+
41
+ def select_proper_files
42
+ @files_to_check = self.files.select { |f|
43
+ self.class.extensions.map { |ex| f.ends_with?(ex) }.any?
44
+ }
45
+ end
46
+
47
+ def check_all_files
48
+ @results = @files_to_check.map do |file|
49
+ color "Checking #{file}...", :yellow
50
+ check_one(file)
51
+ end
52
+ end
53
+
54
+ def self.extensions *args
55
+ @extensions ||= []
56
+ if args.empty?
57
+ @extensions
58
+ else
59
+ @extensions += args
60
+ end
61
+ end
62
+
63
+ def plain_command(cmd, options = {})
64
+ exitstatus = system(cmd)
65
+ show_output(exitstatus, options)
66
+ exitstatus
67
+ end
68
+
69
+ def command(cmd, options = {})
70
+ if options[:use_bundler] == true
71
+ if use_bundler?
72
+ cmd = "bundle exec #{cmd}"
73
+ end
74
+ end
75
+
76
+ cmd = rvm_command(cmd) if use_rvm?
77
+ cmd << " #{options[:append]}" if options[:append]
78
+ exitstatus = execute(cmd)
79
+ show_output(exitstatus, options)
80
+ exitstatus
81
+ end
82
+
83
+ def show_output(exitstatus, options)
84
+ unless options[:show_output] == false
85
+ if exitstatus
86
+ puts " [OK]".green
87
+ else
88
+ puts " [FAIL]".red
89
+ end
90
+ end
91
+ end
92
+
93
+
94
+ def execute(cmd)
95
+ system(cmd)
96
+ end
97
+
98
+ def color(str, color)
99
+ print str.colorize(color)
100
+ end
101
+
102
+ def name
103
+ self.class.to_s.split('::').last.upcase
104
+ end
105
+
106
+ def use_bundler?
107
+ File.exists?("Gemfile.lock")
108
+ end
109
+
110
+ def use_rvm?
111
+ File.exists?(".rvmrc") && File.exists?(rvm_shell)
112
+ end
113
+
114
+ def rvm_shell
115
+ File.join(ENV.fetch('rvm_path', ''), 'bin/rvm-shell')
116
+ end
117
+
118
+ def rvm_command(command)
119
+ rvm_version = `echo $rvm_ruby_string`.chomp
120
+ "#{rvm_shell} '#{rvm_version}' -c '#{command}'"
121
+ end
122
+ end
123
+ end
124
+ end
@@ -1,33 +1,14 @@
1
1
  module Checker
2
2
  module Modules
3
- class Coffeescript
4
- def self.check
5
- Utils.color("> Coffeescript syntax <\n", :light_blue)
6
-
7
- unless Coffeescript.check_for_executable
8
- Utils.color("coffee executable NOT FOUND, OMITTING...\n", :yellow)
9
- return true
10
- end
11
-
12
- files = Utils.files_modified
13
- files.delete_if {|f| !f.ends_with?(".coffee")}
14
-
15
- files.map! do |f|
16
- Utils.color("Checking #{f}...", :yellow)
17
- Coffeescript.check_one(f)
18
- end
19
-
20
- files.all_true?
21
- end
22
-
23
- def self.check_one(file)
24
- Utils.plain_command("cat #{file} | egrep -v '^//=' | coffee -sc > /dev/null")
3
+ class Coffeescript < Base
4
+ extensions 'coffee'
5
+ private
6
+ def check_one(file)
7
+ plain_command("cat #{file} | egrep -v '^//=' | coffee -sc > /dev/null")
25
8
  end
26
9
 
27
- def self.check_for_executable
28
- cmd = "coffee -v"
29
- system(cmd)
30
- $?.exitstatus == 0
10
+ def check_for_executable
11
+ command('coffee -v', :show_output => false, :append => ">> /dev/null 2>&1")
31
12
  end
32
13
  end
33
14
  end
@@ -1,22 +1,10 @@
1
1
  module Checker
2
2
  module Modules
3
- class Haml
4
- def self.check
5
- Utils.color("> HAML syntax <\n", :light_blue)
6
-
7
- files = Utils.files_modified
8
- files.delete_if {|f| !f.ends_with?(".haml")}
9
-
10
- files.map! do |f|
11
- Utils.color("Checking #{f}...", :yellow)
12
- Haml.check_one(f)
13
- end
14
-
15
- files.all_true?
16
- end
17
-
18
- def self.check_one(file)
19
- Utils.plain_command("haml #{file} > /dev/null")
3
+ class Haml < Base
4
+ extensions 'haml'
5
+ private
6
+ def check_one(file)
7
+ plain_command("haml --check #{file} >> /dev/null")
20
8
  end
21
9
  end
22
10
  end
@@ -1,21 +1,15 @@
1
1
  module Checker
2
2
  module Modules
3
- class Pry
4
- def self.check
5
- Utils.color("> binding.pry occurence <\n", :light_blue)
3
+ class Pry < Base
4
+ extensions 'rb'
6
5
 
7
- files = Utils.files_modified
8
-
9
- files.map! do |f|
10
- Utils.color("Checking #{f}...", :yellow)
11
- [Pry.check_for_binding_pry(f), Pry.check_for_binding_remote_pry(f)].all_true?
12
- end
13
-
14
- files.all_true?
6
+ private
7
+ def check_one file
8
+ [check_for_binding_pry(file), check_for_binding_remote_pry(file)].all_true?
15
9
  end
16
10
 
17
- def self.check_for_binding_pry(file)
18
- result = `grep -n "binding.pry" #{file}`.chomp
11
+ def check_for_binding_pry(file)
12
+ result = `grep -n "binding\\.pry" #{file}`.chomp
19
13
 
20
14
  unless result.empty?
21
15
  puts " pry -> FAIL, ".red
@@ -27,8 +21,8 @@ module Checker
27
21
  result.empty?
28
22
  end
29
23
 
30
- def self.check_for_binding_remote_pry(file)
31
- result = `grep -n "binding.remote_pry" #{file}`.chomp
24
+ def check_for_binding_remote_pry(file)
25
+ result = `grep -n "binding\\.remote_pry" #{file}`.chomp
32
26
 
33
27
  unless result.empty?
34
28
  puts " remote_pry -> FAIL".red
@@ -1,22 +1,10 @@
1
1
  module Checker
2
2
  module Modules
3
- class Ruby
4
- def self.check
5
- Utils.color("> Ruby syntax <\n", :light_blue)
6
-
7
- files = Utils.files_modified
8
- files.delete_if {|f| !f.ends_with?(".rb")}
9
-
10
- files.map! do |f|
11
- Utils.color("Checking #{f}...", :yellow)
12
- Ruby.check_one(f)
13
- end
14
-
15
- files.all_true?
16
- end
17
-
18
- def self.check_one(file)
19
- Utils.command("ruby -c #{file}", :append => ">> /dev/null")
3
+ class Ruby < Base
4
+ extensions 'rb'
5
+ private
6
+ def check_one(file)
7
+ command("ruby -c #{file}", :append => ">> /dev/null")
20
8
  end
21
9
  end
22
10
  end
@@ -1,35 +1,14 @@
1
1
  module Checker
2
2
  module Modules
3
- class Sass
4
- def self.check
5
- Utils.color("> Sass syntax <\n", :light_blue)
6
-
7
- unless Sass.check_for_executable
8
- Utils.color("sass executable NOT FOUND, OMITTING...\n", :magenta)
9
- return true
10
- end
11
-
12
- files = Utils.files_modified
13
- files.delete_if {|f| !f.ends_with?(".scss") and !f.ends_with?(".sass")}
14
-
15
- files.map! do |f|
16
- Utils.color("Checking #{f}...", :yellow)
17
- Sass.check_one(f)
18
- end
19
-
20
- files.all_true?
21
- end
22
-
23
- def self.check_one(file)
24
- cmd = "sass #{file}"
25
- Utils.command(cmd, :use_bundler => true, :append => ">> /dev/null")
3
+ class Sass < Base
4
+ extensions 'scss', 'sass'
5
+ private
6
+ def check_one(file)
7
+ command("sass #{file}", :use_bundler => true, :append => ">> /dev/null")
26
8
  end
27
9
 
28
- def self.check_for_executable
29
- return @exitstatus unless @exitstatus.nil?
30
- cmd = "sass -v"
31
- Utils.command(cmd, :use_bundler => true, :show_output => false, :append => ">> /dev/null")
32
- @exitstatus = ($?.exitstatus == 0)
10
+ def check_for_executable
11
+ command("sass -v", :use_bundler => true, :show_output => false, :append => ">> /dev/null 2>&1")
33
12
  end
34
13
  end
35
14
  end
metadata CHANGED
@@ -1,35 +1,46 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: checker
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.4
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 4
9
+ - 1
10
+ version: 0.0.4.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Jacek Jakubik
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-07-09 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-07-09 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: colorize
16
- requirement: &70118335122520 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - =
20
- - !ruby/object:Gem::Version
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 5
31
+ - 8
21
32
  version: 0.5.8
22
33
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70118335122520
25
- description: A collection of modules which every is designed to check syntax for specific
26
- files.
34
+ version_requirements: *id001
35
+ description: A collection of modules which every is designed to check syntax for specific files.
27
36
  email: jacek.jakubik@netguru.pl
28
- executables:
37
+ executables:
29
38
  - checker
30
39
  extensions: []
40
+
31
41
  extra_rdoc_files: []
32
- files:
42
+
43
+ files:
33
44
  - .gitignore
34
45
  - CHANGELOG
35
46
  - README.md
@@ -37,37 +48,42 @@ files:
37
48
  - checker.gemspec
38
49
  - lib/checker.rb
39
50
  - lib/checker/cli.rb
40
- - lib/checker/cli/execute.rb
41
51
  - lib/checker/core_ext.rb
42
- - lib/checker/modules/all.rb
52
+ - lib/checker/modules/base.rb
43
53
  - lib/checker/modules/coffeescript.rb
44
54
  - lib/checker/modules/haml.rb
45
55
  - lib/checker/modules/pry.rb
46
56
  - lib/checker/modules/ruby.rb
47
57
  - lib/checker/modules/sass.rb
48
- - lib/checker/utils.rb
58
+ has_rdoc: true
49
59
  homepage: http://github.com/netguru/checker
50
60
  licenses: []
61
+
51
62
  post_install_message:
52
63
  rdoc_options: []
53
- require_paths:
64
+
65
+ require_paths:
54
66
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - ! '>='
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- required_rubygems_version: !ruby/object:Gem::Requirement
62
- none: false
63
- requirements:
64
- - - ! '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ segments:
79
+ - 0
80
+ version: "0"
67
81
  requirements: []
82
+
68
83
  rubyforge_project:
69
- rubygems_version: 1.8.10
84
+ rubygems_version: 1.3.6
70
85
  signing_key:
71
86
  specification_version: 3
72
87
  summary: Syntax checker for various files
73
88
  test_files: []
89
+
@@ -1,42 +0,0 @@
1
- module Checker
2
- class CLI
3
- module Execute
4
- def self.included(base)
5
- base.extend(ClassMethods)
6
- end
7
-
8
- module ClassMethods
9
- def execute
10
- if ARGV.size == 0
11
- modules = Utils.get_modules_to_check
12
- else
13
- modules = ARGV.map(&:downcase)
14
- end
15
- ## by default lets check all
16
- if modules.empty?
17
- modules = ["all"]
18
- end
19
-
20
- ## check all the modules
21
- if modules.include?("all")
22
- exit (Checker::Modules::All.check ? 0 : 1)
23
- else
24
- Utils.check_module_availability(modules) do |result|
25
- puts "Modules not available: #{result.join(", ")}.\n"
26
- puts "Available: #{Utils.available_modules.join(", ")}\n"
27
- puts "Check your git config checker.check\n"
28
- exit 1
29
- end
30
-
31
- checked = []
32
- modules.each do |mod|
33
- klass = "Checker::Modules::#{mod.downcase.capitalize}".constantize
34
- checked << klass.check
35
- end
36
- exit (checked.all_true? ? 0 : 1)
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,16 +0,0 @@
1
- module Checker
2
- module Modules
3
- ## simple wrapper, to call every module
4
- class All
5
- def self.check
6
- checked = []
7
- constants = Utils.available_modules - ["all"]
8
- constants.each do |const|
9
- klass = "Checker::Modules::#{const.capitalize}".constantize
10
- checked << klass.check
11
- end
12
- checked.all_true?
13
- end
14
- end
15
- end
16
- end
@@ -1,83 +0,0 @@
1
- class Utils
2
- def self.files_modified
3
- @files_modified ||= `git status --porcelain | egrep "^(A |M |R ).*" | awk ' { if ($3 == "->") print $4; else print $2 } '`.split
4
- @files_modified.dup
5
- end
6
-
7
- def self.use_bundler?
8
- File.exists?("Gemfile.lock")
9
- end
10
-
11
- def self.use_rvm?
12
- File.exists?(".rvmrc") && File.exists?(rvm_shell)
13
- end
14
-
15
- def self.rvm_command(command)
16
- rvm_version = `echo $rvm_ruby_string`.chomp
17
- # puts "Using '#{rvm_version}' version"
18
- cmd = "#{rvm_shell} '#{rvm_version}' -c '#{command}'"
19
- cmd
20
- end
21
-
22
- def self.rvm_shell
23
- File.join(ENV.fetch('rvm_path', ''), 'bin/rvm-shell')
24
- end
25
-
26
- def self.show_output(exitstatus, options)
27
- unless options[:show_output] == false
28
- if exitstatus
29
- puts " [OK]".green
30
- else
31
- puts " [FAIL]".red
32
- end
33
- end
34
- end
35
-
36
- def self.plain_command(cmd, options = {})
37
- exitstatus = system(cmd)
38
- Utils.show_output(exitstatus, options)
39
- exitstatus
40
- end
41
-
42
- def self.command(cmd, options = {})
43
- if options[:use_bundler] == true
44
- if Utils.use_bundler?
45
- cmd = "bundle exec #{cmd}"
46
- end
47
- end
48
-
49
- cmd = Utils.rvm_command(cmd) if Utils.use_rvm?
50
- cmd << " #{options[:append]}" if options[:append]
51
- exitstatus = Utils.execute(cmd)
52
- Utils.show_output(exitstatus, options)
53
- exitstatus
54
- end
55
-
56
- def self.execute(cmd)
57
- # system("echo #{cmd}")
58
- system(cmd)
59
- end
60
-
61
- def self.available_modules
62
- Checker::Modules.constants.map(&:to_s).map(&:downcase)
63
- end
64
-
65
- def self.check_module_availability(modules)
66
- constants = self.available_modules
67
- result = modules - (constants & modules)
68
- unless result.empty?
69
- if block_given?
70
- yield(result)
71
- end
72
- end
73
- end
74
-
75
- def self.get_modules_to_check
76
- `git config checker.check`.chomp.split(",").map(&:strip)
77
- end
78
-
79
- def self.color(str, color)
80
- print str.colorize(color)
81
- end
82
- end
83
-