commitment 0.0.1.pre → 0.1.0
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 +4 -4
- data/.travis.yml +1 -0
- data/LICENSE +1 -1
- data/README.md +30 -24
- data/Rakefile +9 -0
- data/bin/console +0 -0
- data/bin/setup +0 -0
- data/commitment.gemspec +9 -1
- data/lib/commitment.rb +52 -1
- data/lib/commitment/generators/install_generator.rb +55 -0
- data/lib/commitment/generators/templates/.hound.yml +41 -0
- data/lib/commitment/generators/templates/.jshintrc +92 -0
- data/lib/commitment/generators/templates/.scss_lint.yml +12 -0
- data/lib/commitment/generators/templates/coverage_helper.rb +19 -0
- data/lib/commitment/railtie.rb +16 -0
- data/lib/commitment/tasks/brakeman.rake +28 -0
- data/lib/commitment/tasks/code_coverage.rake +12 -0
- data/lib/commitment/tasks/jshint.rake +9 -0
- data/lib/commitment/tasks/rubocop.rake +7 -0
- data/lib/commitment/tasks/scss_lint.rake +8 -0
- data/lib/commitment/version.rb +1 -1
- metadata +117 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9235e37c7ffc3a3266515592bb97fa4056e25d14
|
4
|
+
data.tar.gz: c2306824f04986919404c5ef460e6c4a104c67c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e481775dfbf32401fe89b1a2989b0e77375b71732f2db01c3af4c9b83f0a4be4e4c5e02e8f9b3e71b187e131c8ee85b8a1b2a56f5d1686f0576d08394302fb10
|
7
|
+
data.tar.gz: a6a0241a388c912fb7ebbc2fb3ed188812f11e33435489e4686e4d1a9181e436d81c5dbdee17fc9fa1cc0ed08d3613252393c07595af170abf006281d33b8e99
|
data/.travis.yml
CHANGED
data/LICENSE
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
##########################################################################
|
2
|
-
# Copyright 2015
|
2
|
+
# Copyright 2015 University of Notre Dame
|
3
3
|
#
|
4
4
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
5
|
# you may not use this file except in compliance with the License.
|
data/README.md
CHANGED
@@ -1,39 +1,45 @@
|
|
1
1
|
# Commitment
|
2
2
|
|
3
|
-
|
3
|
+
Commitment is [Rails::Railtie](http://api.rubyonrails.org/classes/Rails/Railtie.html) gem.
|
4
|
+
Commitment provides a series of [Rake](https://github.com/ruby/rake) tasks for [Rails](http://rubyonrails.org) applications.
|
4
5
|
|
5
|
-
|
6
|
+
The goal of Commitment is to consolidate common tasks that we use to uphold our
|
7
|
+
software development commitment:
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
```ruby
|
12
|
-
gem 'commitment'
|
13
|
-
```
|
9
|
+
* Code coverage
|
10
|
+
* Programatic style enforcement
|
11
|
+
* Vulnerability scans
|
12
|
+
* Linting
|
14
13
|
|
15
|
-
|
14
|
+
As we work on our code, we want to make sure we are keeping our commitment.
|
15
|
+
If we fail to do so, the build is broken.
|
16
16
|
|
17
|
-
|
17
|
+
## Installation
|
18
18
|
|
19
|
-
|
19
|
+
Before you get started, make sure all of your project changes are committed.
|
20
|
+
Commitment doesn't change too many things, but its nice to "install" something into a clean work area.
|
20
21
|
|
21
|
-
|
22
|
+
Now, add this line to your application's Gemfile:
|
22
23
|
|
23
|
-
|
24
|
+
```ruby
|
25
|
+
group :development, :test do
|
26
|
+
gem 'commitment'
|
27
|
+
end
|
28
|
+
```
|
24
29
|
|
25
|
-
|
30
|
+
And then go to your console and `cd` into the project. You'll run the following two commands:
|
26
31
|
|
27
|
-
|
32
|
+
```console
|
33
|
+
$ bundle
|
34
|
+
$ rails generate commitment:install
|
35
|
+
```
|
28
36
|
|
29
|
-
|
37
|
+
Several files will be added to your project. These are configuration files for the underlying tasks that will be run.
|
38
|
+
Other files will be updated so that Commitment can do its job.
|
30
39
|
|
31
|
-
|
40
|
+
The `$ rails generate commitment:install` will report as output all files that were changed or updated.
|
41
|
+
If you started with a clean work area, you can use your version control tools to see what changes were made.
|
32
42
|
|
33
|
-
##
|
43
|
+
## Roadmap
|
34
44
|
|
35
|
-
|
36
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
37
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
38
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
39
|
-
5. Create a new Pull Request
|
45
|
+
The Commitment gem presently does not make its own commitments. I'd like to fix that.
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
File without changes
|
data/bin/setup
CHANGED
File without changes
|
data/commitment.gemspec
CHANGED
@@ -11,14 +11,22 @@ Gem::Specification.new do |spec|
|
|
11
11
|
|
12
12
|
spec.summary = %q{Provides a mechanism for monitoring your enduring commitment.}
|
13
13
|
spec.description = %q{Provides a mechanism for monitoring your enduring commitment.}
|
14
|
-
spec.homepage = "https://github.com/
|
14
|
+
spec.homepage = "https://github.com/ndlib/commitment"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
17
|
spec.bindir = "bin"
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
|
+
spec.license = 'APACHE2'
|
21
22
|
|
22
23
|
spec.add_development_dependency "bundler", "~> 1.9"
|
23
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_dependency "rubocop"
|
26
|
+
spec.add_dependency "railties"
|
27
|
+
spec.add_dependency "brakeman"
|
28
|
+
spec.add_dependency "scss-lint"
|
29
|
+
spec.add_dependency "simplecov"
|
30
|
+
spec.add_dependency "jshintrb"
|
31
|
+
spec.add_dependency "codeclimate-test-reporter"
|
24
32
|
end
|
data/lib/commitment.rb
CHANGED
@@ -1,5 +1,56 @@
|
|
1
1
|
require "commitment/version"
|
2
|
+
require 'json'
|
2
3
|
|
3
4
|
module Commitment
|
4
|
-
|
5
|
+
module_function
|
6
|
+
def config
|
7
|
+
@config ||= Config.new
|
8
|
+
end
|
9
|
+
|
10
|
+
class Config
|
11
|
+
attr_reader :rubocop_config
|
12
|
+
attr_reader :brakeman_output_pathname
|
13
|
+
attr_reader :jshint_pattern
|
14
|
+
attr_reader :jshint_exclude_pattern
|
15
|
+
attr_reader :jshint_options
|
16
|
+
attr_reader :scss_lint_config
|
17
|
+
attr_reader :percentage_coverage_goal
|
18
|
+
attr_reader :code_coverage_last_run_pathname
|
19
|
+
|
20
|
+
def initialize
|
21
|
+
@project_pathname = default_project_pathname
|
22
|
+
@rubocop_config = project_pathname.join('.hound.yml').to_s
|
23
|
+
@brakeman_output_pathname = project_pathname.join('.tmp.brakeman.json')
|
24
|
+
@jshint_pattern = 'app/assets/**/*.js'
|
25
|
+
@jshint_exclude_pattern = 'app/assets/javascripts/vendor/*.js'
|
26
|
+
@jshint_options = JSON.parse(project_pathname.join('.jshintrc').read)
|
27
|
+
@scss_lint_config = project_pathname.join('.scss_lint.yml').to_s
|
28
|
+
@percentage_coverage_goal = 100
|
29
|
+
@code_coverage_last_run_pathname = project_pathname.join('coverage/.last_run.json')
|
30
|
+
end
|
31
|
+
|
32
|
+
def code_coverage_last_run_results
|
33
|
+
if code_coverage_last_run_pathname.exist?
|
34
|
+
JSON.parse(code_coverage_last_run_pathname.read)
|
35
|
+
else
|
36
|
+
abort("Commitment Failure: Unable to find code coverage information in `#{code_coverage_last_run_pathname.to_s}'")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
attr_reader :project_pathname
|
43
|
+
|
44
|
+
def default_project_pathname
|
45
|
+
if defined?(Rails)
|
46
|
+
Rails.root
|
47
|
+
else
|
48
|
+
require 'pathname'
|
49
|
+
Pathname.new(File.expand_path('../commitment/generators/templates', __FILE__))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
private_constant :Config
|
5
54
|
end
|
55
|
+
|
56
|
+
require 'commitment/railtie' if defined?(Rails)
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Commitment
|
2
|
+
class InstallGenerator < Rails::Generators::Base
|
3
|
+
source_root(File.expand_path("../templates", __FILE__))
|
4
|
+
|
5
|
+
def create_jshint_options
|
6
|
+
template('.jshintrc', '.jshintrc')
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_hound_options
|
10
|
+
template('.hound.yml', '.hound.yml')
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_scss_lint
|
14
|
+
template('.scss_lint.yml', '.scss_lint.yml')
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_coverage_helper
|
18
|
+
# Putting this file in the root directory of the project
|
19
|
+
template('coverage_helper.rb', "#{test_framework}/coverage_helper.rb")
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_default_rake_task
|
23
|
+
append_file('Rakefile') do %(
|
24
|
+
# BEGIN `commitment:install` generator
|
25
|
+
# This was added via commitment:install generator. You are free to change this.
|
26
|
+
Rake::Task["default"].clear
|
27
|
+
task(
|
28
|
+
default: [
|
29
|
+
'commitment:rubocop',
|
30
|
+
'commitment:jshint',
|
31
|
+
'commitment:scss_lint',
|
32
|
+
'#{test_framework}',
|
33
|
+
'commitment:code_coverage',
|
34
|
+
'commitment:brakeman'
|
35
|
+
]
|
36
|
+
)
|
37
|
+
# END `commitment:install` generator
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def inject_spec_helper
|
43
|
+
prepend_file("#{test_framework}/#{test_framework}_helper.rb", "require 'coverage_helper'\n")
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def test_framework
|
49
|
+
return 'spec' if Rails.configuration.generators.options.fetch(:rails).fetch(:test_framework) == :rspec
|
50
|
+
'test'
|
51
|
+
rescue NoMethodError, KeyError
|
52
|
+
'test'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
################################################################################
|
2
|
+
## Releasing the hounds in your local environment.
|
3
|
+
##
|
4
|
+
## Setup:
|
5
|
+
## $ gem install rubocop
|
6
|
+
##
|
7
|
+
## Run:
|
8
|
+
## $ rubocop ./path/to/file ./or/path/to/directory -c ./.hound.yml
|
9
|
+
##
|
10
|
+
## Generation Notes:
|
11
|
+
## This file was generated via the commitment:install generator. You are free
|
12
|
+
## and expected to change this file.
|
13
|
+
################################################################################
|
14
|
+
AllCops:
|
15
|
+
Include:
|
16
|
+
- Rakefile
|
17
|
+
Exclude:
|
18
|
+
- 'vendor/**/*'
|
19
|
+
- 'tmp/**/*'
|
20
|
+
- 'bin/**/*'
|
21
|
+
RunRailsCops: true
|
22
|
+
|
23
|
+
LineLength:
|
24
|
+
Description: 'Limit lines to 140 characters.'
|
25
|
+
Max: 140
|
26
|
+
Enabled: true
|
27
|
+
|
28
|
+
Style/StringLiterals:
|
29
|
+
Description: 'Checks if uses of quotes match the configured preference.'
|
30
|
+
Enabled: false
|
31
|
+
|
32
|
+
PercentLiteralDelimiters:
|
33
|
+
Description: 'Use `%`-literal delimiters consistently'
|
34
|
+
Enabled: false
|
35
|
+
|
36
|
+
Documentation:
|
37
|
+
Description: 'Document classes and non-namespace modules.'
|
38
|
+
Enabled: true
|
39
|
+
Exclude:
|
40
|
+
- spec/**/*
|
41
|
+
- test/**/*
|
@@ -0,0 +1,92 @@
|
|
1
|
+
{
|
2
|
+
|
3
|
+
// Generation Notes:
|
4
|
+
// This file was generated via the commitment:install generator. You are free
|
5
|
+
// and expected to change this file.
|
6
|
+
//
|
7
|
+
// JSHint Default Configuration File (as on JSHint website)
|
8
|
+
// See http://jshint.com/docs/ for more details
|
9
|
+
|
10
|
+
"maxerr" : 50, // {int} Maximum error before stopping
|
11
|
+
|
12
|
+
// Enforcing
|
13
|
+
"bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.)
|
14
|
+
"camelcase" : false, // true: Identifiers must be in camelCase
|
15
|
+
"curly" : true, // true: Require {} for every new block or scope
|
16
|
+
"eqeqeq" : true, // true: Require triple equals (===) for comparison
|
17
|
+
"forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
|
18
|
+
"freeze" : true, // true: prohibits overwriting prototypes of native objects such as Array, Date etc.
|
19
|
+
"immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
|
20
|
+
"indent" : 4, // {int} Number of spaces to use for indentation
|
21
|
+
"latedef" : false, // true: Require variables/functions to be defined before being used
|
22
|
+
"newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()`
|
23
|
+
"noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
|
24
|
+
"noempty" : true, // true: Prohibit use of empty blocks
|
25
|
+
"nonbsp" : true, // true: Prohibit "non-breaking whitespace" characters.
|
26
|
+
"nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment)
|
27
|
+
"plusplus" : false, // true: Prohibit use of `++` & `--`
|
28
|
+
"quotmark" : false, // Quotation mark consistency:
|
29
|
+
// false : do nothing (default)
|
30
|
+
// true : ensure whatever is used is consistent
|
31
|
+
// "single" : require single quotes
|
32
|
+
// "double" : require double quotes
|
33
|
+
"undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
|
34
|
+
"unused" : true, // true: Require all defined variables be used
|
35
|
+
"strict" : true, // true: Requires all functions run in ES5 Strict Mode
|
36
|
+
"maxparams" : false, // {int} Max number of formal params allowed per function
|
37
|
+
"maxdepth" : false, // {int} Max depth of nested blocks (within functions)
|
38
|
+
"maxstatements" : false, // {int} Max number statements per function
|
39
|
+
"maxcomplexity" : false, // {int} Max cyclomatic complexity per function
|
40
|
+
"maxlen" : false, // {int} Max number of characters per line
|
41
|
+
|
42
|
+
// Relaxing
|
43
|
+
"asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
|
44
|
+
"boss" : false, // true: Tolerate assignments where comparisons would be expected
|
45
|
+
"debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
|
46
|
+
"eqnull" : false, // true: Tolerate use of `== null`
|
47
|
+
"es5" : false, // true: Allow ES5 syntax (ex: getters and setters)
|
48
|
+
"esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
|
49
|
+
"moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
|
50
|
+
// (ex: `for each`, multiple try/catch, function expression…)
|
51
|
+
"evil" : false, // true: Tolerate use of `eval` and `new Function()`
|
52
|
+
"expr" : false, // true: Tolerate `ExpressionStatement` as Programs
|
53
|
+
"funcscope" : false, // true: Tolerate defining variables inside control statements
|
54
|
+
"globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
|
55
|
+
"iterator" : false, // true: Tolerate using the `__iterator__` property
|
56
|
+
"lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
|
57
|
+
"laxbreak" : false, // true: Tolerate possibly unsafe line breakings
|
58
|
+
"laxcomma" : false, // true: Tolerate comma-first style coding
|
59
|
+
"loopfunc" : false, // true: Tolerate functions being defined in loops
|
60
|
+
"multistr" : false, // true: Tolerate multi-line strings
|
61
|
+
"noyield" : false, // true: Tolerate generator functions with no yield statement in them.
|
62
|
+
"notypeof" : false, // true: Tolerate invalid typeof operator values
|
63
|
+
"proto" : false, // true: Tolerate using the `__proto__` property
|
64
|
+
"scripturl" : false, // true: Tolerate script-targeted URLs
|
65
|
+
"shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
|
66
|
+
"sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
|
67
|
+
"supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
|
68
|
+
"validthis" : false, // true: Tolerate using this in a non-constructor function
|
69
|
+
|
70
|
+
// Environments
|
71
|
+
"browser" : true, // Web Browser (window, document, etc)
|
72
|
+
"browserify" : false, // Browserify (node.js code in the browser)
|
73
|
+
"couch" : false, // CouchDB
|
74
|
+
"devel" : true, // Development/debugging (alert, confirm, etc)
|
75
|
+
"dojo" : false, // Dojo Toolkit
|
76
|
+
"jasmine" : false, // Jasmine
|
77
|
+
"jquery" : true, // jQuery
|
78
|
+
"mocha" : true, // Mocha
|
79
|
+
"mootools" : false, // MooTools
|
80
|
+
"node" : false, // Node.js
|
81
|
+
"nonstandard" : false, // Widely adopted globals (escape, unescape, etc)
|
82
|
+
"prototypejs" : false, // Prototype and Scriptaculous
|
83
|
+
"qunit" : false, // QUnit
|
84
|
+
"rhino" : false, // Rhino
|
85
|
+
"shelljs" : false, // ShellJS
|
86
|
+
"worker" : false, // Web Workers
|
87
|
+
"wsh" : false, // Windows Scripting Host
|
88
|
+
"yui" : false, // Yahoo User Interface
|
89
|
+
|
90
|
+
// Custom Globals
|
91
|
+
"globals" : {} // additional predefined global variables
|
92
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
## Generation Notes:
|
2
|
+
## This file was generated via the commitment:install generator. You are free
|
3
|
+
## and expected to change this file.
|
4
|
+
scss_files: "app/**/*.scss"
|
5
|
+
|
6
|
+
linters:
|
7
|
+
PlaceholderInExtend:
|
8
|
+
exclude: app/assets/stylesheets/framework_and_overrides.css.scss
|
9
|
+
StringQuotes:
|
10
|
+
enabled: false
|
11
|
+
Comment:
|
12
|
+
exclude: app/assets/stylesheets/application.css.scss
|
@@ -0,0 +1,19 @@
|
|
1
|
+
## Generation Notes:
|
2
|
+
## This file was generated via the commitment:install generator. You are free
|
3
|
+
## and expected to change this file.
|
4
|
+
if ENV['COV'] || ENV['COVERAGE'] || ENV['TRAVIS']
|
5
|
+
if ENV['TRAVIS']
|
6
|
+
require 'simplecov'
|
7
|
+
require "codeclimate-test-reporter"
|
8
|
+
SimpleCov.start do
|
9
|
+
formatter SimpleCov::Formatter::MultiFormatter[
|
10
|
+
SimpleCov::Formatter::HTMLFormatter,
|
11
|
+
CodeClimate::TestReporter::Formatter
|
12
|
+
]
|
13
|
+
load_profile 'rails'
|
14
|
+
end
|
15
|
+
elsif ENV['COV'] || ENV['COVERAGE']
|
16
|
+
require 'simplecov'
|
17
|
+
SimpleCov.start { load_profile 'rails' }
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Commitment
|
2
|
+
class Railtie < Rails::Railtie
|
3
|
+
rake_tasks do
|
4
|
+
require 'commitment'
|
5
|
+
load 'commitment/tasks/brakeman.rake'
|
6
|
+
load 'commitment/tasks/rubocop.rake'
|
7
|
+
load 'commitment/tasks/jshint.rake'
|
8
|
+
load 'commitment/tasks/scss_lint.rake'
|
9
|
+
load 'commitment/tasks/code_coverage.rake'
|
10
|
+
end
|
11
|
+
|
12
|
+
generators do
|
13
|
+
require 'commitment/generators/install_generator'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
namespace :commitment do
|
2
|
+
namespace :brakeman do
|
3
|
+
task scan: [:environment] do
|
4
|
+
$stdout.puts "Checking commitment:brakeman"
|
5
|
+
require 'brakeman'
|
6
|
+
Brakeman.run app_path: '.', output_files: [Commitment.config.brakeman_output_pathname.to_s], print_report: true
|
7
|
+
end
|
8
|
+
|
9
|
+
task(guard: [:environment, 'commitment:brakeman:scan']) do
|
10
|
+
begin
|
11
|
+
json_document = Commitment.config.brakeman_output_pathname.read
|
12
|
+
json = JSON.parse(json_document)
|
13
|
+
ensure
|
14
|
+
Commitment.config.brakeman_output_pathname.unlink
|
15
|
+
end
|
16
|
+
errors = []
|
17
|
+
['errors', 'warnings', 'ignored_warnings'].each do |key|
|
18
|
+
errors += Array.wrap(json.fetch(key))
|
19
|
+
end
|
20
|
+
if errors.any?
|
21
|
+
abort("Brakeman Vulnerabilities Detected:\n\n\t" << errors.join("\n\t"))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc 'Ensure that brakeman has not detected any vulnerabilities'
|
27
|
+
task brakeman: ['brakeman:guard']
|
28
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
namespace :commitment do
|
2
|
+
task :configure_test_for_code_coverage do
|
3
|
+
ENV['COVERAGE'] = 'true'
|
4
|
+
end
|
5
|
+
task :code_coverage do
|
6
|
+
$stdout.puts "Checking commitment:code_coverage"
|
7
|
+
coverage_percentage = Commitment.config.code_coverage_last_run_results.fetch('result').fetch('covered_percent').to_i
|
8
|
+
if Commitment.config.percentage_coverage_goal > coverage_percentage
|
9
|
+
abort("Code Coverage Goal Not Met:\n\t#{goal_percentage}%\tExpected\n\t#{Commitment.config.percentage_coverage_goal}%\tActual")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
namespace :commitment do
|
2
|
+
require 'jshintrb/jshinttask'
|
3
|
+
desc 'Ensure that javascript has been properly linted'
|
4
|
+
Jshintrb::JshintTask.new :jshint do |t|
|
5
|
+
t.pattern = Commitment.config.jshint_pattern
|
6
|
+
t.exclude_pattern = Commitment.config.jshint_exclude_pattern
|
7
|
+
t.options = Commitment.config.jshint_options
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
namespace :commitment do
|
2
|
+
require 'scss_lint/rake_task'
|
3
|
+
desc 'Ensure that javascript has been properly linted'
|
4
|
+
SCSSLint::RakeTask.new('scss_lint') do |t|
|
5
|
+
t.config = Commitment.config.scss_lint_config
|
6
|
+
t.files = [] # Rely instead on he above configuration
|
7
|
+
end
|
8
|
+
end
|
data/lib/commitment/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: commitment
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Friesen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,104 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.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
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: railties
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: brakeman
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: scss-lint
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: jshintrb
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: codeclimate-test-reporter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
41
139
|
description: Provides a mechanism for monitoring your enduring commitment.
|
42
140
|
email:
|
43
141
|
- jeremy.n.friesen@gmail.com
|
@@ -58,9 +156,21 @@ files:
|
|
58
156
|
- bin/setup
|
59
157
|
- commitment.gemspec
|
60
158
|
- lib/commitment.rb
|
159
|
+
- lib/commitment/generators/install_generator.rb
|
160
|
+
- lib/commitment/generators/templates/.hound.yml
|
161
|
+
- lib/commitment/generators/templates/.jshintrc
|
162
|
+
- lib/commitment/generators/templates/.scss_lint.yml
|
163
|
+
- lib/commitment/generators/templates/coverage_helper.rb
|
164
|
+
- lib/commitment/railtie.rb
|
165
|
+
- lib/commitment/tasks/brakeman.rake
|
166
|
+
- lib/commitment/tasks/code_coverage.rake
|
167
|
+
- lib/commitment/tasks/jshint.rake
|
168
|
+
- lib/commitment/tasks/rubocop.rake
|
169
|
+
- lib/commitment/tasks/scss_lint.rake
|
61
170
|
- lib/commitment/version.rb
|
62
|
-
homepage: https://github.com/
|
63
|
-
licenses:
|
171
|
+
homepage: https://github.com/ndlib/commitment
|
172
|
+
licenses:
|
173
|
+
- APACHE2
|
64
174
|
metadata: {}
|
65
175
|
post_install_message:
|
66
176
|
rdoc_options: []
|
@@ -73,14 +183,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
183
|
version: '0'
|
74
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
185
|
requirements:
|
76
|
-
- - "
|
186
|
+
- - ">="
|
77
187
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
188
|
+
version: '0'
|
79
189
|
requirements: []
|
80
190
|
rubyforge_project:
|
81
|
-
rubygems_version: 2.4.
|
191
|
+
rubygems_version: 2.4.7
|
82
192
|
signing_key:
|
83
193
|
specification_version: 4
|
84
194
|
summary: Provides a mechanism for monitoring your enduring commitment.
|
85
195
|
test_files: []
|
86
|
-
has_rdoc:
|