massa 0.1.5 → 0.2.0.rc1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f656becaad0929a02ce34d40d6ce0984163e3603
4
- data.tar.gz: 821b4fb41419a8a38330f20f7626e78fa9dead2c
3
+ metadata.gz: 5294c5345ac2c5b006693c600568831d1de6649d
4
+ data.tar.gz: 2afeac396df3302a6edd7241692487745147684f
5
5
  SHA512:
6
- metadata.gz: 935570a7bffec10ca0658300c29e23850232f40709bc5b3b268d46ae647381fd88d2195ad25441b72a115e1c4f37022a1191deb636b0f3a5df654d6fc8d83d0b
7
- data.tar.gz: 59e7f660fa5263922b29612c63196f946c14ffced060e27369cef66e8306b8da43176c89b4bf2d085438cb11ee0ecc1eed33d1630bea6c7ac2bee50f54b84377
6
+ metadata.gz: 60eac8dff6af846ab950b3478e9a388e056216756cd4952ebee9e475bdf7e59b4b4b08db077500a46ed7b7243e7a6330236f0a3cc05612f3c714545467463b64
7
+ data.tar.gz: 25585fa5aecf1887868b16382eafc075360f4d7cccb8db8892c8e0cf7955f1c25c21be43ff7c599e2e52eb75797d6abe430f471dda4e6b5cf3874f05256a0cf3
data/.gitignore CHANGED
@@ -1,6 +1,5 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
- /Gemfile.lock
4
3
  /_yardoc/
5
4
  /coverage/
6
5
  /doc/
data/Gemfile.lock ADDED
@@ -0,0 +1,70 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ massa (0.2.0.rc1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ ast (2.2.0)
10
+ codeclimate-test-reporter (0.5.0)
11
+ simplecov (>= 0.7.1, < 1.0.0)
12
+ coderay (1.1.1)
13
+ diff-lcs (1.2.5)
14
+ docile (1.1.5)
15
+ json (1.8.3)
16
+ method_source (0.8.2)
17
+ parser (2.3.0.7)
18
+ ast (~> 2.2)
19
+ powerpack (0.1.1)
20
+ pry (0.10.3)
21
+ coderay (~> 1.1.0)
22
+ method_source (~> 0.8.1)
23
+ slop (~> 3.4)
24
+ rainbow (2.1.0)
25
+ rake (10.5.0)
26
+ rspec (3.4.0)
27
+ rspec-core (~> 3.4.0)
28
+ rspec-expectations (~> 3.4.0)
29
+ rspec-mocks (~> 3.4.0)
30
+ rspec-core (3.4.4)
31
+ rspec-support (~> 3.4.0)
32
+ rspec-expectations (3.4.0)
33
+ diff-lcs (>= 1.2.0, < 2.0)
34
+ rspec-support (~> 3.4.0)
35
+ rspec-mocks (3.4.1)
36
+ diff-lcs (>= 1.2.0, < 2.0)
37
+ rspec-support (~> 3.4.0)
38
+ rspec-support (3.4.1)
39
+ rubocop (0.39.0)
40
+ parser (>= 2.3.0.7, < 3.0)
41
+ powerpack (~> 0.1)
42
+ rainbow (>= 1.99.1, < 3.0)
43
+ ruby-progressbar (~> 1.7)
44
+ unicode-display_width (~> 1.0, >= 1.0.1)
45
+ rubocop-rspec (1.4.1)
46
+ rubocop (= 0.39.0)
47
+ ruby-progressbar (1.7.5)
48
+ simplecov (0.11.2)
49
+ docile (~> 1.1.0)
50
+ json (~> 1.8)
51
+ simplecov-html (~> 0.10.0)
52
+ simplecov-html (0.10.0)
53
+ slop (3.6.0)
54
+ unicode-display_width (1.0.3)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ bundler (~> 1.11)
61
+ codeclimate-test-reporter
62
+ massa!
63
+ pry
64
+ rake (~> 10.0)
65
+ rspec (~> 3.4)
66
+ rubocop
67
+ rubocop-rspec
68
+
69
+ BUNDLED WITH
70
+ 1.11.2
data/README.md CHANGED
@@ -12,13 +12,13 @@ This gem helps you to keep or increase the quality, good practices and security
12
12
 
13
13
  Ie.: Instead of:
14
14
 
15
- $ bundle exec rubocop && bundle exec brakeman -Aqz && bundle exec rails_best_practices && bundle exec rspec && etc
15
+ $ bundle exec rubocop && bundle exec brakeman -Aqz && bundle exec rails_best_practices && bundle exec rspec && karma start --single-run --browsers PhantomJS && etc
16
16
 
17
17
  You will only need:
18
18
 
19
19
  $ bundle exec massa
20
20
 
21
- You can either use only the [default tools](https://github.com/lucascaton/massa/blob/master/config/default_tools.yml) or adding custom ones by using a [simple config file](https://github.com/lucascaton/massa#usage).
21
+ You can either use only the [default tools](https://github.com/lucascaton/massa/blob/master/config/default_tools.yml) or define your own by using a [simple config file](https://github.com/lucascaton/massa#usage).
22
22
 
23
23
  ![massa](https://raw.githubusercontent.com/lucascaton/massa/master/readme/massa.gif)
24
24
 
@@ -42,7 +42,7 @@ And then execute:
42
42
 
43
43
  ## Usage
44
44
 
45
- Generate a config file:
45
+ Generate a config file (optional):
46
46
 
47
47
  $ bundle exec massa -g
48
48
 
@@ -19,10 +19,10 @@ module Massa
19
19
  end
20
20
 
21
21
  def run!
22
- Massa::Tool.list.each do |gem_name, tool|
23
- Massa::CLI.colorize :blue, "➙ #{tool['description']}"
22
+ Massa::Tool.list.each do |tool|
23
+ Massa::CLI.colorize :blue, "➙ #{tool.description}"
24
24
 
25
- next unless gem_installed?(gem_name, required: tool['required'])
25
+ next if tool.gem? && !gem_installed?(tool)
26
26
 
27
27
  execute(tool)
28
28
  end
@@ -30,30 +30,30 @@ module Massa
30
30
  Massa::CLI.colorize :green, "~(‾▿‾)~ All good!"
31
31
  end
32
32
 
33
- def gem_installed?(name, required:)
34
- return true if `gem query -i #{name}`.chomp == 'true'
33
+ def gem_installed?(tool)
34
+ return true if `gem query -i #{tool.name}`.chomp == 'true'
35
35
 
36
- Massa::CLI.colorize :yellow, "༼ つ ◕_◕ ༽つ '#{name}' is not installed"
36
+ Massa::CLI.colorize :yellow, "༼ つ ◕_◕ ༽つ '#{tool.name}' gem is not installed"
37
37
 
38
- required ? exit(1) : false
38
+ tool.required? ? exit(1) : false
39
39
  end
40
40
 
41
41
  def execute(tool)
42
42
  command_output = ''
43
43
 
44
44
  if verbose?
45
- system(tool['command'])
45
+ system(tool.command)
46
46
  else
47
- IO.popen(tool['command'], err: [:child, :out]) { |io| command_output = io.read }
47
+ IO.popen(tool.command, err: [:child, :out]) { |io| command_output = io.read }
48
48
  end
49
49
 
50
50
  unless $CHILD_STATUS.success?
51
- Massa::CLI.colorize :red, "¯\\_(ツ)_/¯ #{tool['description']} failed:"
52
- Massa::CLI.colorize :yellow, "$ #{tool['command']}"
51
+ Massa::CLI.colorize :red, "¯\\_(ツ)_/¯ #{tool.description} failed:"
52
+ Massa::CLI.colorize :yellow, "$ #{tool.command}"
53
53
 
54
54
  puts command_output if command_output.to_s != ''
55
55
 
56
- exit 1 if tool['required']
56
+ exit 1 if tool.required?
57
57
  end
58
58
  end
59
59
  end
@@ -1,11 +1,39 @@
1
- # You can find the default tools in the following link:
1
+ # By leaving this file empty, massa will run all default tools. You can check them here:
2
2
  # https://github.com/lucascaton/massa/blob/master/config/default_tools.yml
3
- # You can overwrite any tool completely or just change its `require` config to `false`
3
+ # Otherwise you can define your own tools like in the following examples:
4
4
 
5
- # rspec-rails:
6
- # required: false
5
+ # rubocop:
6
+ # description: 'Rubocop'
7
+ # command: 'bundle exec rubocop'
8
+ # required: true
9
+ #
10
+ # brakeman:
11
+ # description: 'Brakeman'
12
+ # command: 'bundle exec brakeman -Aqz'
13
+ # required: true
14
+ #
15
+ # rails_best_practices:
16
+ # description: 'Rails Best Practices'
17
+ # command: 'bundle exec rails_best_practices'
18
+ # required: true
7
19
  #
8
- # minitest:
9
- # description: 'minitest'
10
- # command: 'bundle exec rake'
20
+ # haml_lint:
21
+ # description: 'HAML lint'
22
+ # command: 'bundle exec haml-lint app/views'
23
+ # required: true
24
+ #
25
+ # i18n-tasks:
26
+ # description: 'I18n translations'
27
+ # command: 'bundle exec i18n-tasks missing'
28
+ # required: false
29
+ #
30
+ # karma:
31
+ # description: 'Karma (JS specs)'
32
+ # command: 'karma start --single-run --browsers PhantomJS'
33
+ # required: true
34
+ # gem: false
35
+ #
36
+ # rspec-rails:
37
+ # description: 'RSpec'
38
+ # command: 'RAILS_ENV=test bundle exec rspec'
11
39
  # required: true
data/lib/massa/tool.rb CHANGED
@@ -2,23 +2,35 @@
2
2
 
3
3
  module Massa
4
4
  class Tool
5
+ attr_reader :name, :description, :gem, :command, :required
6
+
7
+ def initialize(name, attributes)
8
+ @name = name
9
+ @description = attributes['description']
10
+ @gem = attributes['gem'].nil? ? true : attributes[:gem]
11
+ @command = attributes['command']
12
+ @required = attributes['required'].nil? ? true : attributes[:required]
13
+ end
14
+
15
+ alias required? required
16
+ alias gem? gem
17
+
5
18
  class << self
6
19
  def list
7
- default_tools.each_with_object({}) do |(tool, options), hash|
8
- hash[tool] = options.merge(custom_tools[tool] || {})
9
- hash
10
- end
20
+ tools = custom_tools.any? ? custom_tools : default_tools
21
+
22
+ tools.map { |name, attributes| new(name, attributes) }
11
23
  end
12
24
 
13
25
  private
14
26
 
15
27
  def default_tools
16
- YAML.load_file(config_file_from_gem)
28
+ @default_tools ||= YAML.load_file(config_file_from_gem)
17
29
  end
18
30
 
19
31
  def custom_tools
20
32
  # Returns an empty hash if config file is empty
21
- YAML.load_file(config_file_from_project) || {}
33
+ @custom_tools ||= YAML.load_file(config_file_from_project) || {}
22
34
 
23
35
  # When there is no config file in the project
24
36
  rescue Errno::ENOENT
data/lib/massa/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Massa
4
- VERSION = '0.1.5'
4
+ VERSION = '0.2.0.rc1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: massa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Caton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-07 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -149,9 +149,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
149
  version: '0'
150
150
  required_rubygems_version: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - ">="
152
+ - - ">"
153
153
  - !ruby/object:Gem::Version
154
- version: '0'
154
+ version: 1.3.1
155
155
  requirements: []
156
156
  rubyforge_project:
157
157
  rubygems_version: 2.5.1