massa 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b637d9708f9678b2a5a485a64c271a9599a07f63
4
+ data.tar.gz: 9d2d70b8e9c207556ec772a0e8841481289b5f66
5
+ SHA512:
6
+ metadata.gz: bab93ed29ebea4a2883a135078f2734a111eb4a2cae6d9671308cee39a52d6a63b8637b713f388f72f91736ace968e90050c7db237e7cb09cc50bf283b6523b9
7
+ data.tar.gz: e4db48e29c9c4344f780ed56d6b76e387f658c219676b83d3fb114ae5bdd062afe5c088fcf6f060ebec7691e7c237bcc6f11ab8cdab4af65cd9556272b2b7853
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'bundler'
4
+
5
+ group :development do
6
+ gem 'jeweler'
7
+ gem 'pry'
8
+ # gem 'rspec'
9
+ # gem 'simplecov'
10
+ end
@@ -0,0 +1,63 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ addressable (2.4.0)
5
+ builder (3.2.2)
6
+ coderay (1.1.0)
7
+ descendants_tracker (0.0.4)
8
+ thread_safe (~> 0.3, >= 0.3.1)
9
+ faraday (0.9.2)
10
+ multipart-post (>= 1.2, < 3)
11
+ git (1.2.9.1)
12
+ github_api (0.13.1)
13
+ addressable (~> 2.4.0)
14
+ descendants_tracker (~> 0.0.4)
15
+ faraday (~> 0.8, < 0.10)
16
+ hashie (>= 3.4)
17
+ multi_json (>= 1.7.5, < 2.0)
18
+ oauth2
19
+ hashie (3.4.3)
20
+ highline (1.7.8)
21
+ jeweler (2.0.1)
22
+ builder
23
+ bundler (>= 1.0)
24
+ git (>= 1.2.5)
25
+ github_api
26
+ highline (>= 1.6.15)
27
+ nokogiri (>= 1.5.10)
28
+ rake
29
+ rdoc
30
+ jwt (1.5.2)
31
+ method_source (0.8.2)
32
+ mini_portile2 (2.0.0)
33
+ multi_json (1.11.2)
34
+ multi_xml (0.5.5)
35
+ multipart-post (2.0.0)
36
+ nokogiri (1.6.7.1)
37
+ mini_portile2 (~> 2.0.0.rc2)
38
+ oauth2 (1.0.0)
39
+ faraday (>= 0.8, < 0.10)
40
+ jwt (~> 1.0)
41
+ multi_json (~> 1.3)
42
+ multi_xml (~> 0.5)
43
+ rack (~> 1.2)
44
+ pry (0.10.3)
45
+ coderay (~> 1.1.0)
46
+ method_source (~> 0.8.1)
47
+ slop (~> 3.4)
48
+ rack (1.6.4)
49
+ rake (10.4.2)
50
+ rdoc (4.2.0)
51
+ slop (3.6.0)
52
+ thread_safe (0.3.5)
53
+
54
+ PLATFORMS
55
+ ruby
56
+
57
+ DEPENDENCIES
58
+ bundler
59
+ jeweler
60
+ pry
61
+
62
+ BUNDLED WITH
63
+ 1.11.2
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2015 Lucas Caton
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,33 @@
1
+ # Massa
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/massa.svg)](https://rubygems.org/gems/massa)
4
+ [![Build Status](https://travis-ci.org/lucascaton/massa.svg?branch=master)](https://travis-ci.org/lucascaton/massa)
5
+ [![Coverage Status](https://img.shields.io/codeclimate/coverage/github/lucascaton/massa.svg)](https://codeclimate.com/github/lucascaton/massa)
6
+ [![Code Climate](https://codeclimate.com/github/lucascaton/massa/badges/gpa.svg)](https://codeclimate.com/github/lucascaton/massa)
7
+
8
+ Keep the quality, good practices and security of Rails projects.
9
+
10
+ ## About the gem name
11
+
12
+ "Massa" is a Portuguese slang which means "awesome",
13
+ so once you add it to your project, it becomes "massa"!
14
+
15
+ ## Contributing
16
+
17
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't
18
+ been fixed yet.
19
+ * Check out the issue tracker to make sure someone already hasn't requested it and / or
20
+ contributed it.
21
+ * Fork the project.
22
+ * Start a feature / bugfix branch.
23
+ * Commit and push until you are happy with your contribution.
24
+ * Make sure to add tests for it. This is important so I don't break it in a future version
25
+ unintentionally.
26
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own
27
+ version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can
28
+ cherry-pick around it.
29
+ * Submit a Pull Request
30
+
31
+ ## Copyright
32
+
33
+ Copyright (c) 2015 Lucas Caton. See LICENSE.txt for further details.
@@ -0,0 +1,26 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ begin
5
+ Bundler.setup(:default, :development)
6
+ rescue Bundler::BundlerError => e
7
+ $stderr.puts e.message
8
+ $stderr.puts "Run `bundle install` to install missing gems"
9
+ exit e.status_code
10
+ end
11
+
12
+ require 'rake'
13
+ require 'jeweler'
14
+ require './lib/massa/version'
15
+
16
+ Jeweler::Tasks.new do |gem|
17
+ gem.name = 'massa'
18
+ gem.homepage = 'http://github.com/lucascaton/massa'
19
+ gem.license = 'MIT'
20
+ gem.summary = %q{Keep the quality, good practices and security of Rails projects.}
21
+ gem.description = %q{Keep the quality, good practices and security of Rails projects.}
22
+ gem.authors = ['Lucas Caton']
23
+ gem.version = Massa::VERSION
24
+ end
25
+
26
+ Jeweler::RubygemsDotOrgTasks.new
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ $LOAD_PATH.push File.expand_path('../../lib', __FILE__)
5
+
6
+ options = {}
7
+
8
+ OptionParser.new do |opts|
9
+ opts.banner = 'Usage: massa [options]' # \n\nYou can use flags as such:'
10
+
11
+ opts.on('-h', '--help', 'Display this screen') do
12
+ puts opts
13
+ exit
14
+ end
15
+
16
+ opts.on('-v', '--verbose', 'Run verbosely') do |v|
17
+ options[:verbose] = v
18
+ end
19
+ end.parse!
20
+
21
+ require 'massa'
22
+ Massa::Analyzier.run!(options)
@@ -0,0 +1,6 @@
1
+ module Massa
2
+ end
3
+
4
+ require 'massa/cli'
5
+ require 'massa/tool'
6
+ require 'massa/analyzer'
@@ -0,0 +1,55 @@
1
+ require 'bundler/setup' # Set up gems listed in the Gemfile.
2
+ require 'ostruct'
3
+ require 'yaml'
4
+
5
+ module Massa
6
+ class Analyzier
7
+ attr_reader :verbose
8
+ alias :verbose? :verbose
9
+
10
+ def self.run!(options)
11
+ new(options).run!
12
+ end
13
+
14
+ def initialize(verbose: false)
15
+ @verbose = verbose
16
+ end
17
+
18
+ def run!
19
+ Massa::Tool.list.each do |tool|
20
+ Massa::CLI.colorize :blue, "➙ #{tool.description}"
21
+
22
+ next unless gem_installed?(tool.gem_name, required: tool.required)
23
+
24
+ execute(tool)
25
+ end
26
+
27
+ Massa::CLI.colorize :green, "~(‾▿‾)~ All good!"
28
+ end
29
+
30
+ def gem_installed?(name, required:)
31
+ return true if Bundler.require.map(&:name).include?(name)
32
+
33
+ Massa::CLI.colorize :yellow, "༼ つ ◕_◕ ༽つ '#{name}' is not installed"
34
+
35
+ required ? exit(1) : false
36
+ end
37
+
38
+ def execute(tool)
39
+ command_output = ''
40
+
41
+ if verbose?
42
+ system(tool.command)
43
+ else
44
+ IO.popen(tool.command, err: [:child, :out]) { |io| command_output = io.read }
45
+ end
46
+
47
+ unless $?.success?
48
+ Massa::CLI.colorize :red, "¯\\_(ツ)_/¯ #{tool.description} failed."
49
+ puts command_output if command_output.present?
50
+
51
+ exit 1 if tool.required
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,17 @@
1
+ module Massa
2
+ class CLI
3
+ def self.colorize(color, string)
4
+ color_code = case color
5
+ when :red then 31
6
+ when :green then 32
7
+ when :yellow then 33
8
+ when :blue then 34
9
+ when :pink then 35
10
+ when :light_blue then 36
11
+ else 0
12
+ end
13
+
14
+ puts "\n\e[#{color_code}m#{string}\e[0m\n"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ - :description: 'Rubocop'
2
+ :gem_name: 'rubocop'
3
+ :command: 'bundle exec rubocop'
4
+ :required: true
5
+
6
+ - :description: 'Brakeman'
7
+ :gem_name: 'brakeman'
8
+ :command: 'bundle exec brakeman -Aqz'
9
+ :required: true
10
+
11
+ - :description: 'Rails Best Practices'
12
+ :gem_name: 'rails_best_practices'
13
+ :command: 'bundle exec rails_best_practices'
14
+ :required: true
15
+
16
+ - :description: 'HAML lint'
17
+ :gem_name: 'haml-lint'
18
+ :command: 'bundle exec haml-lint app/views'
19
+ :required: true
20
+
21
+ - :description: 'I18n translations'
22
+ :gem_name: 'i18n-tasks'
23
+ :command: 'bundle exec i18n-tasks missing'
24
+ :required: false
25
+
26
+ - :description: 'RSpec'
27
+ :gem_name: 'rspec'
28
+ :command: 'RAILS_ENV=test bundle exec rspec'
29
+ :required: true
@@ -0,0 +1,16 @@
1
+ module Massa
2
+ class Tool
3
+ class << self
4
+ def list
5
+ YAML.load_file(tools_yaml_file).map { |tool| OpenStruct.new(tool) }
6
+ end
7
+
8
+ def tools_yaml_file
9
+ "#{Gem::Specification.find_by_name('massa').gem_dir}/lib/massa/default_tools.yml"
10
+ rescue Gem::LoadError
11
+ Massa::CLI.colorize :red, "¯\\_(ツ)_/¯ 'massa' gem is not in your Gemfile."
12
+ exit 1
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ class Massa
2
+ VERSION = '0.0.2'
3
+ end
@@ -0,0 +1,61 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: massa 0.0.2 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "massa"
9
+ s.version = "0.0.2"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["Lucas Caton"]
14
+ s.date = "2015-12-22"
15
+ s.description = "Keep the quality, good practices and security of Rails projects."
16
+ s.executables = ["massa"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.md"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".rspec",
24
+ "Gemfile",
25
+ "Gemfile.lock",
26
+ "LICENSE.txt",
27
+ "README.md",
28
+ "Rakefile",
29
+ "bin/massa",
30
+ "lib/massa.rb",
31
+ "lib/massa/analyzer.rb",
32
+ "lib/massa/cli.rb",
33
+ "lib/massa/default_tools.yml",
34
+ "lib/massa/tool.rb",
35
+ "lib/massa/version.rb",
36
+ "massa.gemspec"
37
+ ]
38
+ s.homepage = "http://github.com/lucascaton/massa"
39
+ s.licenses = ["MIT"]
40
+ s.rubygems_version = "2.4.8"
41
+ s.summary = "Keep the quality, good practices and security of Rails projects."
42
+
43
+ if s.respond_to? :specification_version then
44
+ s.specification_version = 4
45
+
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
+ s.add_runtime_dependency(%q<bundler>, [">= 0"])
48
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
49
+ s.add_development_dependency(%q<pry>, [">= 0"])
50
+ else
51
+ s.add_dependency(%q<bundler>, [">= 0"])
52
+ s.add_dependency(%q<jeweler>, [">= 0"])
53
+ s.add_dependency(%q<pry>, [">= 0"])
54
+ end
55
+ else
56
+ s.add_dependency(%q<bundler>, [">= 0"])
57
+ s.add_dependency(%q<jeweler>, [">= 0"])
58
+ s.add_dependency(%q<pry>, [">= 0"])
59
+ end
60
+ end
61
+
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: massa
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Lucas Caton
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-22 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: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: jeweler
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: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Keep the quality, good practices and security of Rails projects.
56
+ email:
57
+ executables:
58
+ - massa
59
+ extensions: []
60
+ extra_rdoc_files:
61
+ - LICENSE.txt
62
+ - README.md
63
+ files:
64
+ - ".document"
65
+ - ".rspec"
66
+ - Gemfile
67
+ - Gemfile.lock
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - bin/massa
72
+ - lib/massa.rb
73
+ - lib/massa/analyzer.rb
74
+ - lib/massa/cli.rb
75
+ - lib/massa/default_tools.yml
76
+ - lib/massa/tool.rb
77
+ - lib/massa/version.rb
78
+ - massa.gemspec
79
+ homepage: http://github.com/lucascaton/massa
80
+ licenses:
81
+ - MIT
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.4.8
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Keep the quality, good practices and security of Rails projects.
103
+ test_files: []