phare 0.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9cdce49504a22679ea43dfe644e259f624322c6f
4
+ data.tar.gz: 3525cfc8920a49d5348c80eb1d4cec5a4c4a57de
5
+ SHA512:
6
+ metadata.gz: 0c495fd0e49ee1a81215cd23c668696f6cdc334882f2e9c77bde160230ca1c997553fda95267e1ed569498d986ea4933f2a8cb5770e56d6cc3cfccabe614f1f0
7
+ data.tar.gz: 1c573198e4ff077aea4822748b11434dbc58b196764ea1e1a879a77aa4647e11f231dfe16dcc85637431d6bc1021b7dfa000029c78e0ccc2473aa2619a03994b
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # Phare
2
+
3
+ ## Installation
4
+
5
+ Add this line to your application’s Gemfile:
6
+
7
+ ```ruby
8
+ gem 'phare'
9
+ ```
10
+
11
+ If you wish to check for JavaScript code style using JSHint and JSCS, you must install them too:
12
+
13
+ ```bash
14
+ $ npm install -g jshint jscs
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ Phare provides an executable named `phare`. You can just use it as is:
20
+
21
+ ```bash
22
+ $ phare
23
+ ```
24
+
25
+ One of the best way to use Phare is by hooking it before your version control commits. For example, with `git`:
26
+
27
+ ```bash
28
+ $ bundle binstubs phare
29
+ $ ln -s "`pwd`/bin/phare" .git/hooks/pre-commit
30
+ ```
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/bin/phare ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
+
5
+ require 'phare'
6
+
7
+ if ENV['SKIP_CODE_CHECK']
8
+ puts '--------------------------------------------------------'
9
+ puts 'Skipping code style checking… Really? Well alright then…'
10
+ puts '--------------------------------------------------------'
11
+ else
12
+ if Phare::CLI.new(Dir.getwd).tap { |c| c.run }.status == 0
13
+ puts ''
14
+ puts '------------------------------------------'
15
+ puts 'Everything looks good, keep on committing!'
16
+ puts '------------------------------------------'
17
+ exit 0
18
+ else
19
+ puts ''
20
+ puts '------------------------------------------------------------------------'
21
+ puts 'Something’s wrong with your code style. Please fix it before committing.'
22
+ puts '------------------------------------------------------------------------'
23
+ exit 1
24
+ end
25
+ end
data/lib/phare.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'phare/version'
2
+
3
+ require 'phare/cli'
4
+
5
+ require 'phare/checks/ruby_rubocop'
6
+ require 'phare/checks/javascript_jshint'
7
+ require 'phare/checks/javascript_jscs'
8
+
9
+ module Phare
10
+ end
@@ -0,0 +1,31 @@
1
+ module Phare
2
+ module Checks
3
+ class JavaScriptJSCS
4
+ attr_reader :status
5
+
6
+ def initialize(directory)
7
+ @config = File.expand_path("#{directory}.jscs.json", __FILE__)
8
+ @path = File.expand_path("#{directory}app/assets", __FILE__)
9
+ @command = "jscs #{@path}"
10
+
11
+ puts '---------------------------------------------'
12
+ puts 'Running JSCS to check for JavaScript style…'
13
+ puts '---------------------------------------------'
14
+ end
15
+
16
+ def run
17
+ if File.exists?(@config)
18
+ system(@command)
19
+ @status = $CHILD_STATUS.exitstatus
20
+
21
+ unless @status == 0
22
+ puts "Something went wrong. Program exited with #{@status}"
23
+ end
24
+ else
25
+ puts 'No `.jscs.json` configuration file found. Skipping it.'
26
+ @status = 0
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ module Phare
2
+ module Checks
3
+ class JavaScriptJSHint
4
+ attr_reader :status
5
+
6
+ def initialize(directory)
7
+ @config = File.expand_path("#{directory}.jshintrc", __FILE__)
8
+ @path = File.expand_path("#{directory}app/assets/javascripts/**/*", __FILE__)
9
+ @command = "jshint --config #{@config} --extra-ext .js,.es6.js #{@path}"
10
+
11
+ puts '---------------------------------------------'
12
+ puts 'Running JSHint to check for JavaScript style…'
13
+ puts '---------------------------------------------'
14
+ end
15
+
16
+ def run
17
+ if File.exists?(@config)
18
+ system(@command)
19
+ @status = $CHILD_STATUS.exitstatus
20
+
21
+ if @status == 0
22
+ puts 'No code style errors found.'
23
+ else
24
+ puts "Something went wrong. Program exited with #{@status}"
25
+ end
26
+ else
27
+ puts 'No `.jshintrc` configuration file found. Skipping it.'
28
+ @status = 0
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ module Phare
2
+ module Checks
3
+ class RubyRubocop
4
+ attr_reader :status
5
+
6
+ def initialize
7
+ @command = 'bundle exec rubocop'
8
+
9
+ puts '----------------------------------------'
10
+ puts 'Running Rubocop to check for Ruby style…'
11
+ puts '----------------------------------------'
12
+ end
13
+
14
+ def run
15
+ system(@command)
16
+ @status = $CHILD_STATUS.exitstatus
17
+
18
+ unless @status == 0
19
+ puts "Something went wrong. Program exited with #{@status}"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
data/lib/phare/cli.rb ADDED
@@ -0,0 +1,29 @@
1
+ require 'English'
2
+
3
+ module Phare
4
+ class CLI
5
+ attr_reader :status
6
+
7
+ def initialize(directory)
8
+ @directory = directory
9
+ @directory << '/' unless @directory.end_with?('/')
10
+ end
11
+
12
+ def run
13
+ ruby = Checks::RubyRubocop.new
14
+ ruby.run
15
+
16
+ puts ''
17
+
18
+ jshint = Checks::JavaScriptJSHint.new(@directory)
19
+ jshint.run
20
+
21
+ puts ''
22
+
23
+ jscs = Checks::JavaScriptJSCS.new(@directory)
24
+ jscs.run
25
+
26
+ @status = [ruby.status, jshint.status, jscs.status].find { |status| status > 0 } || 0
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module Phare
2
+ VERSION = '0.1'
3
+ end
data/phare.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'phare/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'phare'
8
+ spec.version = Phare::VERSION
9
+ spec.authors = ['Rémi Prévost']
10
+ spec.email = ['remi@exomel.com']
11
+ spec.description = ''
12
+ spec.summary = ''
13
+ spec.homepage = 'https://github.com/mirego/phare'
14
+ spec.license = 'BSD 3-Clause'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.3'
22
+ spec.add_development_dependency 'rake'
23
+
24
+ spec.add_dependency 'rubocop'
25
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: phare
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Rémi Prévost
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: ''
56
+ email:
57
+ - remi@exomel.com
58
+ executables:
59
+ - phare
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - Gemfile
65
+ - README.md
66
+ - Rakefile
67
+ - bin/phare
68
+ - lib/phare.rb
69
+ - lib/phare/checks/javascript_jscs.rb
70
+ - lib/phare/checks/javascript_jshint.rb
71
+ - lib/phare/checks/ruby_rubocop.rb
72
+ - lib/phare/cli.rb
73
+ - lib/phare/version.rb
74
+ - phare.gemspec
75
+ homepage: https://github.com/mirego/phare
76
+ licenses:
77
+ - BSD 3-Clause
78
+ metadata: {}
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 2.1.0
96
+ signing_key:
97
+ specification_version: 4
98
+ summary: ''
99
+ test_files: []
100
+ has_rdoc: