checker 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1,4 @@
1
+ Soon...
2
+
3
+ git config checker.check 'all'
4
+ git config checker.check 'ruby, haml, coffeescript'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'checker/cli'
4
+ Checker::CLI.execute
@@ -0,0 +1,13 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'checker'
3
+ s.version = '0.0.1'
4
+ s.date = '2012-04-03'
5
+ s.summary = "Syntax checker for various files"
6
+ s.description = "A collection of modules which every is designed to check syntax for specific files."
7
+ s.authors = ["Jacek Jakubik"]
8
+ s.email = 'jacek.jakubik@netguru.pl'
9
+ s.files = `git ls-files`.split("\n")
10
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
11
+ s.require_paths = ["lib"]
12
+ s.homepage = 'http://github.com/netguru/checker'
13
+ end
@@ -0,0 +1,7 @@
1
+ require 'checker/core_ext'
2
+
3
+
4
+ require "checker/modules/all"
5
+ require "checker/modules/ruby"
6
+ require "checker/modules/haml"
7
+
@@ -0,0 +1,11 @@
1
+ require 'checker'
2
+ require 'checker/cli/execute'
3
+
4
+ module Checker
5
+ module Modules; end
6
+
7
+ class CLI
8
+
9
+ include Execute
10
+ end
11
+ end
@@ -0,0 +1,61 @@
1
+ class CoreExt
2
+ def self.constantize(camel_cased_word)
3
+ names = camel_cased_word.split('::')
4
+ names.shift if names.empty? || names.first.empty?
5
+
6
+ constant = Object
7
+ names.each do |name|
8
+ constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
9
+ end
10
+ constant
11
+ end
12
+ end
13
+
14
+ class String
15
+ def constantize
16
+ CoreExt.constantize(self)
17
+ end
18
+ end
19
+
20
+ module Checker
21
+ class CLI
22
+ module Execute
23
+ def self.included(base)
24
+ base.extend(ClassMethods)
25
+ end
26
+
27
+ module ClassMethods
28
+ def execute
29
+ if ARGV.size == 0
30
+ modules = Utils.get_modules_to_check
31
+ else
32
+ modules = ARGV.map(&:downcase)
33
+ end
34
+ ## by default lets check all
35
+ if modules.empty?
36
+ modules = ["all"]
37
+ end
38
+
39
+ ## check all the modules
40
+ if modules.include?("all")
41
+ exit (Checker::Modules::All.check ? 0 : 1)
42
+ else
43
+ Utils.check_module_availability(modules) do |result|
44
+ puts "Modules not available: #{result.join(", ")}.\n"
45
+ puts "Available: #{Utils.available_modules.join(", ")}\n"
46
+ puts "Check your git config checker.check\n"
47
+ exit 1
48
+ end
49
+
50
+ checked = []
51
+ modules.each do |mod|
52
+ klass = "Checker::Modules::#{mod.downcase.capitalize}".constantize
53
+ checked << klass.check
54
+ end
55
+ exit (checked.all_true? ? 0 : 1)
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,31 @@
1
+ require 'checker/utils'
2
+
3
+ class CoreExt
4
+ def self.constantize(camel_cased_word)
5
+ names = camel_cased_word.split('::')
6
+ names.shift if names.empty? || names.first.empty?
7
+
8
+ constant = Object
9
+ names.each do |name|
10
+ constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
11
+ end
12
+ constant
13
+ end
14
+ end
15
+
16
+ class String
17
+ def constantize
18
+ CoreExt.constantize(self)
19
+ end
20
+
21
+ def ends_with?(patt)
22
+ patt = Regexp.new(Regexp.escape(patt) + "$")
23
+ self.match patt
24
+ end
25
+ end
26
+
27
+ class Array
28
+ def all_true?
29
+ self.all? {|o| o == true}
30
+ end
31
+ end
@@ -0,0 +1,16 @@
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
@@ -0,0 +1,23 @@
1
+ module Checker
2
+ module Modules
3
+ class Haml
4
+ def self.check
5
+ puts ">> HAML <<"
6
+
7
+ files = Utils.files_modified
8
+ files.delete_if {|f| !f.ends_with?(".haml")}
9
+
10
+ files.map! do |f|
11
+ puts "Checking #{f}..."
12
+ Haml.check_one(f)
13
+ end
14
+
15
+ files.all_true?
16
+ end
17
+
18
+ def self.check_one(file)
19
+ system("haml --check #{file}")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ module Checker
2
+ module Modules
3
+ class Ruby
4
+ def self.check
5
+ puts ">> RUBY <<"
6
+
7
+ files = Utils.files_modified
8
+ files.delete_if {|f| !f.ends_with?(".rb")}
9
+
10
+ files.map! do |f|
11
+ puts "Checking #{f}..."
12
+ Ruby.check_one(f)
13
+ end
14
+
15
+ files.all_true?
16
+ end
17
+
18
+ def self.check_one(file)
19
+ if Utils.use_rvm?
20
+ Utils.rvm_command("ruby -c #{file}")
21
+ else
22
+ Utils.command("ruby -c #{file}")
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,48 @@
1
+ class Utils
2
+ def self.files_modified
3
+ `git status --porcelain | egrep "^(A |M |R ).*" | awk ' { if ($3 == "->") print $4; else print $2 } '`.split
4
+ end
5
+
6
+ def self.use_rvm?
7
+ File.exists?(".rvmrc")
8
+ end
9
+
10
+ def self.rvm_command(command)
11
+ f = File.read(".rvmrc").split("\n").first
12
+ rvm_version = nil
13
+ if f.match(/rvm( use|) ([^ ]+)$/)
14
+ rvm_version = $2
15
+ end
16
+ if rvm_version.nil?
17
+ puts "Cannot determine rvm version"
18
+ exit 1
19
+ else
20
+ puts "Using '#{rvm_version}' version"
21
+ end
22
+ cmd = "$rvm_path/bin/rvm-shell '#{rvm_version}' -c '#{command}'"
23
+ Utils.command cmd
24
+ end
25
+
26
+ def self.command(cmd)
27
+ system('echo ' + cmd)
28
+ system(cmd)
29
+ end
30
+
31
+ def self.available_modules
32
+ Checker::Modules.constants.map(&:to_s).map(&:downcase)
33
+ end
34
+
35
+ def self.check_module_availability(modules)
36
+ constants = self.available_modules
37
+ result = modules - (constants & modules)
38
+ unless result.empty?
39
+ if block_given?
40
+ yield(result)
41
+ end
42
+ end
43
+ end
44
+
45
+ def self.get_modules_to_check
46
+ `git config checker.check`.chomp.split(",").map(&:strip)
47
+ end
48
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: checker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jacek Jakubik
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-03 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A collection of modules which every is designed to check syntax for specific
15
+ files.
16
+ email: jacek.jakubik@netguru.pl
17
+ executables:
18
+ - checker
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - README
23
+ - bin/checker
24
+ - checker.gemspec
25
+ - lib/checker.rb
26
+ - lib/checker/cli.rb
27
+ - lib/checker/cli/execute.rb
28
+ - lib/checker/core_ext.rb
29
+ - lib/checker/modules/all.rb
30
+ - lib/checker/modules/haml.rb
31
+ - lib/checker/modules/ruby.rb
32
+ - lib/checker/utils.rb
33
+ homepage: http://github.com/netguru/checker
34
+ licenses: []
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ none: false
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ requirements: []
52
+ rubyforge_project:
53
+ rubygems_version: 1.8.10
54
+ signing_key:
55
+ specification_version: 3
56
+ summary: Syntax checker for various files
57
+ test_files: []