rake-n-bake 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ require 'bundler/audit/cli'
2
+
3
+ namespace :bake do
4
+ desc 'Check Gemfile.lock for security issues'
5
+ task :bundler_audit do
6
+ Bundler::Audit::CLI.start
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ require 'term/ansicolor'
2
+
3
+ namespace :bake do
4
+ task :check_external_dependencies do
5
+ include Term::ANSIColor
6
+ checker = RakeNBake::DependencyChecker.new(@external_dependencies)
7
+
8
+ puts 'Checking external dependencies...'
9
+ checker.check
10
+ puts
11
+
12
+ missing = checker.missing
13
+ fail("The following dependencies are missing: \n#{missing.join(%Q[\n])}") unless missing.empty?
14
+ puts
15
+ end
16
+ end
@@ -0,0 +1,85 @@
1
+ namespace :bake do
2
+ namespace :code_quality do
3
+ desc 'Runs all code quality checks'
4
+ task :all => [:trailing_spaces, :shoulds, :debugger, :pry, :console_log]
5
+
6
+ desc 'check for trailing spaces'
7
+ task :trailing_spaces do
8
+ grep_for_trailing_space %w{spec features lib app factories db}
9
+ end
10
+
11
+ desc %(check for legacy 'it "should blah"' style specs)
12
+ task :shoulds do
13
+ grep_for_shoulds %w{spec}
14
+ end
15
+
16
+ desc 'check for debugger statements'
17
+ task :debugger do
18
+ grep_for_debugger %w{lib app spec features}
19
+ end
20
+
21
+ desc 'check for binding.pry statements'
22
+ task :pry do
23
+ grep_for_pry %w{lib app spec features}
24
+ end
25
+
26
+ desc 'check for console.log'
27
+ task :console_log do
28
+ grep_for_console_log %w{app/assets/javascripts }
29
+ end
30
+
31
+ desc 'check for Time.now should use Time.zone.now'
32
+ task :time_check do
33
+ grep_for_time_now %w{app lib}
34
+ end
35
+
36
+ def grep_for_trailing_space *file_patterns
37
+ grep '^.*[[:space:]]+$', file_patterns, 'trailing spaces', ['*.yml', '*.csv']
38
+ end
39
+
40
+ def grep_for_shoulds *file_patterns
41
+ grep '^[[:space:]]*it "should.*$',
42
+ file_patterns,
43
+ 'it block description starting with should'
44
+ end
45
+
46
+ def grep_for_pry *file_patterns
47
+ grep 'binding.pry',
48
+ file_patterns,
49
+ 'binding.pry statement found',
50
+ %w[common_spec_helper.rb code_quality.rake]
51
+ end
52
+
53
+ def grep_for_debugger *file_patterns
54
+ grep 'debugger',
55
+ file_patterns,
56
+ 'debugger statement found',
57
+ %w[common_spec_helper.rb code_quality.rake angular.js]
58
+ end
59
+
60
+ def grep_for_console_log *file_patterns
61
+ grep 'console.log',
62
+ file_patterns,
63
+ 'console.log statement found',
64
+ %w[angular.js jquery.flot-0.8.1.js]
65
+ end
66
+
67
+ def grep_for_time_now *file_patterns
68
+ grep "Time.now",
69
+ file_patterns,
70
+ "Time.now found, use Time.zone.now to prevent timezone conflicts",
71
+ %w{*.rake}
72
+ end
73
+
74
+ def grep regex, file_patterns, error_message, exclude_patterns=[], perl_regex=false
75
+ files_found = ""
76
+ command = "grep -r -n -s --binary-files=without-match '#{regex}' #{file_patterns.join(' ')}"
77
+ exclude_patterns.each do |exclude_pattern|
78
+ command << " --exclude '#{exclude_pattern}'"
79
+ end
80
+ command << (perl_regex ? ' -P' : ' -E')
81
+ files_found << `#{command}`
82
+ abort("#{error_message} found:\n#{files_found}") unless files_found.empty?
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,21 @@
1
+ begin
2
+ require "simplecov"
3
+
4
+ namespace :bake do
5
+ namespace :coverage do
6
+ task :check_specs do
7
+ SimpleCov.coverage_dir 'log/coverage/spec'
8
+ coverage = SimpleCov.result.covered_percent
9
+ fail "Spec coverage was only #{coverage}%" if coverage < 100.0
10
+ end
11
+
12
+ task :check_cucumber do
13
+ SimpleCov.coverage_dir 'log/coverage/features'
14
+ coverage = SimpleCov.result.covered_percent
15
+ fail "Feature coverage was only #{coverage}%" if coverage < 100.0
16
+ end
17
+ end
18
+ end
19
+ rescue LoadError
20
+ $stderr.puts 'Warning: SimpleCov not available.'
21
+ end
data/tasks/ok.rake ADDED
@@ -0,0 +1,37 @@
1
+ require 'term/ansicolor'
2
+
3
+ namespace :bake do
4
+ include Term::ANSIColor
5
+
6
+ desc 'Print the "ALL TESTS PASSED" message'
7
+ task :ok do
8
+ puts
9
+ print [
10
+ "*".bold.red,
11
+ "*".bold.yellow,
12
+ "*".bold.green,
13
+ "*".bold.blue,
14
+ "*".bold.magenta,
15
+ " ALL TESTS PASSED ".bold.green,
16
+ "*".bold.magenta,
17
+ "*".bold.blue,
18
+ "*".bold.green,
19
+ "*".bold.yellow,
20
+ "*".bold.red,
21
+ ].join
22
+ puts
23
+ end
24
+
25
+ desc 'Print the "ALL TESTS PASSED" message WITH A SWEET RAINBOW!!!'
26
+ task :ok_rainbow do
27
+ puts
28
+ print " ", " ", " ", " ".on_red, " ", " ", " ", "\n"
29
+ print " ", " ", " ".on_red, " ".on_yellow, " ".on_red, " ", " ", "\n"
30
+ print " ", " ".on_red, " ".on_yellow, " ".on_green, " ".on_yellow, " ".on_red, " ", "\n"
31
+ print " ".on_red, " ".on_yellow, " ".on_green, " ".on_blue, " ".on_green, " ".on_yellow, " ".on_red, "\n"
32
+ print " ".on_yellow, " ".on_green, " ".on_blue, " ".on_magenta, " ".on_blue, " ".on_green, " ".on_yellow, "\n"
33
+ print " ".on_green, " ".on_blue, " ".on_magenta, " ", " ".on_magenta, " ".on_blue, " ".on_green, "\n"
34
+ print " ".on_blue, " ".on_magenta, " ", " ALL TESTS PASSED".bold.green, " ".green, " ".on_magenta, " ".on_blue, "\n"
35
+ puts
36
+ end
37
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,13 @@
1
+ begin
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:"bake:rspec") do |t|
5
+ t.verbose = false
6
+ end
7
+
8
+ RSpec::Core::RakeTask.new(:"bake:rspec_test_prepare" => :"test:prepare") do |t|
9
+ t.verbose = false
10
+ end
11
+ rescue LoadError
12
+ $stderr.puts 'Warning: RSpec not available.'
13
+ end
data/tasks/semver.rake ADDED
@@ -0,0 +1,53 @@
1
+ begin
2
+ require 'semver'
3
+ namespace :bake do
4
+ namespace :semver do
5
+
6
+ desc "Display the latest version (form .semver)"
7
+ task :version do
8
+ RakeNBake::SemverVersioning.latest_version
9
+ RakeNBake::SemverVersioning.tag
10
+ end
11
+
12
+ desc 'Increment major version in .semver (eg 1.2.3 => 2.0.0)'
13
+ task :major do
14
+ RakeNBake::SemverVersioning.inc_major
15
+ RakeNBake::SemverVersioning.tag
16
+ end
17
+
18
+ desc 'Increment minor version in .semver (eg 1.2.3 => 1.3.0)'
19
+ task :minor do
20
+ RakeNBake::SemverVersioning.inc_minor
21
+ RakeNBake::SemverVersioning.tag
22
+ end
23
+
24
+ desc 'Increment patch version in .semver (eg 1.2.3 => 2.0.0)'
25
+ task :patch do
26
+ RakeNBake::SemverVersioning.inc_patch
27
+ RakeNBake::SemverVersioning.tag
28
+ end
29
+
30
+ desc 'Add or modify the current prerelease version (eg 1.2.3-rc1 => 1.2.3-rc2'
31
+ task :prerelease, [:version] do |task, args|
32
+ version = args[:version] || fail("Invalid usage: rake bake:semver:prerelase['release name']")
33
+ RakeNBake::SemverVersioning.prerelease version
34
+ RakeNBake::SemverVersioning.tag
35
+ end
36
+
37
+ desc 'Increment major version and add a prerelease version (eg 1.2.3 => 2.0.0-rc1)'
38
+ task :inc_prerelease, [:version] do |task, args|
39
+ version = args[:version] || fail("Invalid usage: rake bake:semver:inc_prerelase['release name']")
40
+ RakeNBake::SemverVersioning.inc_prerelease version
41
+ RakeNBake::SemverVersioning.tag
42
+ end
43
+
44
+ desc 'Remove prerelease version (eg 1.2.3-rc2 => 1.2.3)'
45
+ task :release do
46
+ RakeNBake::SemverVersioning.release
47
+ RakeNBake::SemverVersioning.tag
48
+ end
49
+ end
50
+ end
51
+ rescue LoadError
52
+ $stderr.puts "Error: Semver not avaialble"
53
+ end
@@ -0,0 +1,31 @@
1
+ desc "Display the latest version (from history.rdoc)"
2
+ task :"bake:version" do
3
+ puts "Latest version is #{RakeNBake::Version.latest_version}"
4
+ end
5
+
6
+ namespace :bake do
7
+ namespace :version do
8
+ desc "Increment the major version in history.rdoc (eg 1.2.3 => 2.0.0)"
9
+ task :major do
10
+ new_version = RakeNBake::Version.latest_version
11
+ new_version[0] += 1
12
+ new_version[1,2] = 0, 0
13
+ RakeNBake::Version.update_to new_version
14
+ end
15
+
16
+ desc "Increment the minor version in history.rdoc (eg 1.2.3 => 1.3.0)"
17
+ task :minor do
18
+ new_version = RakeNBake::Version.latest_version
19
+ new_version[1] += 1
20
+ new_version[2] = 0
21
+ RakeNBake::Version.update_to new_version
22
+ end
23
+
24
+ desc "Increment the patch version in history.rdoc (eg 1.2.3 => 1.2.4)"
25
+ task :patch do
26
+ new_version = RakeNBake::Version.latest_version
27
+ new_version[2] += 1
28
+ RakeNBake::Version.update_to new_version
29
+ end
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rake-n-bake
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Richard Vickerstaff
8
+ - Adam Whittingham
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-10-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '10'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '10'
28
+ - !ruby/object:Gem::Dependency
29
+ name: term-ansicolor
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.3'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.3'
42
+ description: Common rake tasks, baked to perfection and ready to serve!
43
+ email:
44
+ - m3akq@btinternet.com
45
+ - adam.whittingham@gmail.com
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".bundle/config"
51
+ - ".gitignore"
52
+ - ".ruby-version"
53
+ - ".travis.yml"
54
+ - Gemfile
55
+ - Gemfile.lock
56
+ - README.md
57
+ - Rakefile
58
+ - bin/bundle-audit
59
+ - bin/bundler
60
+ - bin/cdiff
61
+ - bin/colortab
62
+ - bin/decolor
63
+ - bin/htmldiff
64
+ - bin/ldiff
65
+ - bin/rake
66
+ - bin/rspec
67
+ - bin/semver
68
+ - bin/term_display
69
+ - bin/term_mandel
70
+ - bin/thor
71
+ - history.rdoc
72
+ - lib/dependency_checker.rb
73
+ - lib/rake_n_bake.rb
74
+ - lib/semver_versioning.rb
75
+ - lib/version.rb
76
+ - rake-n-bake.gemspec
77
+ - spec/.keep
78
+ - spec/dependency_checker_spec.rb
79
+ - spec/semver_versioning_spec.rb
80
+ - spec/spec_helper.rb
81
+ - spec/version_spec.rb
82
+ - tasks/bundler_audit.rake
83
+ - tasks/check_external_deps.rake
84
+ - tasks/code_quality.rake
85
+ - tasks/coverage.rake
86
+ - tasks/ok.rake
87
+ - tasks/rspec.rake
88
+ - tasks/semver.rake
89
+ - tasks/version.rake
90
+ homepage: https://github.com/RichardVickerstaff/rake-n-bake
91
+ licenses:
92
+ - MIT
93
+ metadata: {}
94
+ post_install_message:
95
+ rdoc_options: []
96
+ require_paths:
97
+ - lib
98
+ - tasks
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ requirements: []
110
+ rubyforge_project:
111
+ rubygems_version: 2.2.2
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: Common rake tasks, baked to perfection and ready to serve!
115
+ test_files: []