guard-jshint-on-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'guard'
4
+ gem 'jshint_on_rails'
data/README.md ADDED
@@ -0,0 +1,43 @@
1
+ Guard::JshintOnRails
2
+ =============
3
+ This project is a fork from wireframe's [guard-jslint-on-rails](https://github.com/wireframe/guard-jslint-on-rails).
4
+ Instead of using the original [jslint-on-rails](https://github.com/psionides/jslint_on_rails), [jshint-on-rails](https://github.com/liquid/jshint_on_rails) is used here.
5
+
6
+ =============
7
+
8
+ Guard plugin to verify that Javascript files comply with [JSHint](http://jslint.com/) validations.
9
+
10
+
11
+ Install
12
+ -------
13
+
14
+ Install and configure the [JSHint on Rails](https://github.com/liquid/jshint_on_rails) gem.
15
+
16
+ Install the gem:
17
+
18
+ $ gem install guard-jshint-on-rails
19
+
20
+ Add it to your Gemfile (inside development group):
21
+
22
+ ``` ruby
23
+ gem 'guard-jshint-on-rails'
24
+ ```
25
+
26
+ Add guard definition to your Guardfile by running this command:
27
+
28
+ $ guard init jshint-on-rails
29
+
30
+ Configuration
31
+ -------------
32
+
33
+ ``` ruby
34
+ # Guardfile
35
+ guard 'jshint-on-rails' do
36
+ # watch for changes to application javascript files
37
+ watch(%r{^app/assets/javascripts/.*\.js$})
38
+ end
39
+ ```
40
+
41
+ Additional option `:config_path` is available to specify the path to the yaml file.
42
+
43
+ Please read [Guard doc](https://github.com/guard/guard#readme) for more information about the Guardfile DSL.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-s
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "guard-jshint-on-rails"
5
+ s.version = "0.0.1"
6
+ s.platform = Gem::Platform::RUBY
7
+ s.authors = ["Johnson Liang", "Andrew Liu", "Ryan Sonnek"]
8
+ s.email = ["johnsonliang7@gmail.com", "ryan@codecrate.com"]
9
+ s.homepage = "https://github.com/MrOrz/guard-jshint-on-rails"
10
+ s.summary = %q{Guard Javascript changes to ensure JSHint complience}
11
+ s.description = %q{Guard Javascript changes, ensuring JSHint complience}
12
+
13
+ s.rubyforge_project = "guard-jshint-on-rails"
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency 'guard', '>= 1.0.0'
21
+ s.add_dependency 'jshint', '>= 1.0.2'
22
+ end
@@ -0,0 +1,47 @@
1
+ require 'guard'
2
+ require 'guard/guard'
3
+ require 'guard/notifier'
4
+ require 'jshint'
5
+
6
+ module Guard
7
+ class JshintOnRails < Guard
8
+
9
+ def initialize(watchers=[], options={})
10
+ super
11
+ @config_path = File.join(Dir.pwd, options[:config_path] || 'config/jslint.yml')
12
+ end
13
+
14
+ def start
15
+ UI.info "Guard::JsHintOnRails started using #{@config_path}"
16
+ end
17
+
18
+ def run_on_change(paths)
19
+ error = nil
20
+ begin
21
+ output = capture_output do
22
+ lint = ::JSHint::Lint.new(
23
+ :paths => paths,
24
+ :config_path => @config_path
25
+ )
26
+ lint.run
27
+ end
28
+ rescue ::JSHint::LintCheckFailure => e
29
+ error = e
30
+ end
31
+ Notifier.notify((error ? 'failed' : 'passed'), :title => 'JSHint results', :image => (error ? :failed : :success))
32
+ true
33
+ end
34
+
35
+ private
36
+ def capture_output
37
+ out = StringIO.new
38
+ $stdout = out
39
+ $stderr = out
40
+ yield
41
+ return out
42
+ ensure
43
+ $stderr = STDERR
44
+ $stdout = STDOUT
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,6 @@
1
+ # verify that application Javascript files are lintable
2
+ # see https://github.com/psionides/jslint_on_rails
3
+ guard 'jshint-on-rails' do
4
+ # watch for changes to application javascript files
5
+ watch(%r{^app/assets/javascripts/.*\.js$})
6
+ end
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guard-jshint-on-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Johnson Liang
9
+ - Andrew Liu
10
+ - Ryan Sonnek
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2012-03-07 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: guard
18
+ requirement: &2156642540 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: 1.0.0
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *2156642540
27
+ - !ruby/object:Gem::Dependency
28
+ name: jshint
29
+ requirement: &2156641300 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: 1.0.2
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *2156641300
38
+ description: Guard Javascript changes, ensuring JSHint complience
39
+ email:
40
+ - johnsonliang7@gmail.com
41
+ - ryan@codecrate.com
42
+ executables: []
43
+ extensions: []
44
+ extra_rdoc_files: []
45
+ files:
46
+ - .gitignore
47
+ - Gemfile
48
+ - README.md
49
+ - Rakefile
50
+ - guard-jshint-on-rails.gemspec
51
+ - lib/guard/jshint-on-rails.rb
52
+ - lib/guard/jshint-on-rails/templates/Guardfile
53
+ homepage: https://github.com/MrOrz/guard-jshint-on-rails
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project: guard-jshint-on-rails
73
+ rubygems_version: 1.8.10
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: Guard Javascript changes to ensure JSHint complience
77
+ test_files: []