rake_tasks 2.0.6 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ebdca6dc2cdf0c36add2a79641777a56ada03bac
4
+ data.tar.gz: 293c0d0f25ef09b92ce62f9afa77afdb4beb4b8e
5
+ SHA512:
6
+ metadata.gz: 8c72429dac0483323866f90b62d46f59807181566a8ff0905910474ec6f65d45e625c778e6a2925c92705b49fd359b9a068777d25fbf572ae61720973b886149
7
+ data.tar.gz: b96079c97a75e99e1ca5d0e202df1c2e2814672c44f813f096b31c072681b15b919e6da836a43a6e59e28395203c82f6f01d4c7b30a4ae95cfc8ec56e3575aa6
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ ��o*
2
+ �`��1�k�!���S����\��D�|�xJ��拖=��o�
3
+ �^�����!.�CX4�Hݩv��đ���9���.`/������s3��@���'6í�:K�W�Z�@[ci����-�53�(�lΟC���4�� QŎR� ���7�a�?��|
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ #gem 'faker', path: '~/source/forks/faker'
data/lib/base/util.rb ADDED
@@ -0,0 +1,39 @@
1
+ class Util
2
+ def self.dir_glob(*patterns)
3
+ Dir.glob(*patterns)
4
+ end
5
+
6
+ def self.open_file(*args, &block)
7
+ File.open(*args, &block)
8
+ end
9
+
10
+ def self.write_file(file_path, array)
11
+ open_file(file_path, 'w') do |file|
12
+ array.each do |element|
13
+ file.puts element
14
+ end
15
+ end
16
+ end
17
+
18
+ def self.file?(*args)
19
+ File.file?(*args)
20
+ end
21
+
22
+ def self.directory?(*args)
23
+ File.directory?(*args)
24
+ end
25
+
26
+ def self.rm(*args)
27
+ FileUtils.rm(*args)
28
+ end
29
+
30
+ def self.load_yaml(*args)
31
+ # Psych must be available on the system,
32
+ # preferably via installing ruby with libyaml already installed.
33
+ Psych.load_file(*args)
34
+ end
35
+
36
+ def self.load_gemspec(*args)
37
+ Gem::Specification.load(*args)
38
+ end
39
+ end
data/lib/rake_tasks.rb CHANGED
@@ -28,9 +28,6 @@
28
28
  ################################################################################
29
29
  #++
30
30
 
31
- require 'rake/testtask'
32
- require 'rdoc/task'
33
- require 'rake/clean'
34
31
  require 'fileutils'
35
32
  require 'psych'
36
33
 
@@ -38,36 +35,26 @@ module RakeTasks
38
35
  # Contains the full path to the shell script to run tests in other env's.
39
36
  SCRIPTS = {
40
37
  :rubies => File.expand_path(File.join(
41
- File.dirname(__FILE__), 'rake_tasks', 'lib', 'rubies.sh')),
38
+ File.dirname(__FILE__), '..', 'scripts', 'rubies.sh')),
42
39
  :gemsets => File.expand_path(File.join(
43
- File.dirname(__FILE__), 'rake_tasks', 'lib', 'bundle_install.sh')),
40
+ File.dirname(__FILE__), '..', 'scripts', 'bundle_install.sh')),
44
41
  }
45
42
  end
46
43
 
47
44
  gem_name = File.basename(__FILE__, '.rb')
45
+ base_path = File.dirname(__FILE__)
48
46
 
49
- task :default
47
+ # Require base files.
48
+ Dir[File.join(base_path, 'base', '*.rb')].each do |base|
49
+ require base
50
+ end
50
51
 
51
- # Require lib files.
52
- Dir[File.join(File.dirname(__FILE__), gem_name, 'lib', '*.rb')].each do |lib|
52
+ # Require files.
53
+ Dir[File.join(base_path, gem_name, '*.rb')].each do |lib|
53
54
  require lib
54
55
  end
55
56
 
56
- # Require tasks.
57
- # These must be required in this order as
58
- # there is an order of precedence for the default task.
59
- # Using a glob, they were being required in different orders
60
- # in different situations.
61
- # Specifically, it was different depending on whether it was
62
- # consumed as an installed gem or pointing to the source.
63
- base = File.dirname(__FILE__)
64
-
65
- require File.join(base, 'rake_tasks/rdoc')
66
- require File.join(base, 'rake_tasks/doc')
67
- require File.join(base, 'rake_tasks/gem')
68
- require File.join(base, 'rake_tasks/test')
69
-
70
- # Include any ruby files in the tasks folder.
71
- Dir[File.join(Dir.getwd, 'tasks', '*.rb')].each do |rake_file|
72
- require rake_file
57
+ # Include any rake files in tasks folders.
58
+ Dir[File.join(Dir.getwd, '**', 'tasks', '**', '*.rake')].each do |rake_file|
59
+ import rake_file
73
60
  end
@@ -1,3 +1,5 @@
1
+ # This file holds the class that handles documentation utilities.
2
+
1
3
  #--
2
4
  ################################################################################
3
5
  # Copyright (C) 2011 Travis Herrick #
@@ -28,35 +30,81 @@
28
30
  ################################################################################
29
31
  #++
30
32
 
31
- if RakeTasks::Gem.gem_file?
32
- ############################################################################
33
- namespace :doc do
34
- ############################################################################
33
+ # The main module for this gem.
34
+ module RakeTasks
35
+ # This class will handle documentation utilities.
36
+ class Doc
37
+ # Constructor.
38
+ def initialize(gem_info = RakeTasks::Gem)
39
+ @gem_spec = gem_info.gem_spec
40
+ @gem_title = gem_info.gem_title(@gem_spec)
41
+ @license_path = 'license'
42
+ @contents = nil
43
+ end
35
44
 
36
- gem_spec_file = RakeTasks::Gem.gem_spec_file
45
+ # The default contents for a readme file.
46
+ def readme_contents
47
+ gem_title = @gem_title
48
+ gem_spec = @gem_spec
37
49
 
38
- readme = 'README.md'
39
- readme = 'README_GENERATED.md' if File.file?(readme)
50
+ @contents ||= %Q{
51
+ #{header :h1, "Welcome to #{gem_title}"}
40
52
 
41
- file readme => gem_spec_file do |t|
42
- doc_obj = RakeTasks::Doc.new
53
+ #{gem_spec.description}
43
54
 
44
- File.open(readme, 'w') do |file|
45
- file.puts doc_obj.readme_contents
46
- end
55
+ #{header :h2, 'Getting Started'}
56
+
57
+ Install #{gem_title} at the command prompt if you haven't yet:
58
+
59
+ $ gem install #{gem_spec.name}
60
+
61
+ Require the gem in your Gemfile:
62
+
63
+ gem '#{gem_spec.name}', '~> #{gem_spec.version}'
64
+
65
+ Require the gem wherever you need to use it:
66
+
67
+ require '#{gem_spec.name}'
68
+
69
+ #{header :h2, 'Usage'}
70
+
71
+ TODO
72
+
73
+ #{header :h2, 'Additional Notes'}
74
+
75
+ TODO
76
+
77
+ #{header :h2, 'Additional Documentation'}
78
+
79
+ $ rake rdoc:app
80
+ #{license_details}}.strip
81
+
82
+ return @contents.split("\n")
47
83
  end
48
84
 
49
- desc "Generate a #{readme} file."
50
- task :readme => readme
85
+ ########################################################################
86
+ private
87
+ ########################################################################
51
88
 
52
- desc "Removes files associated with generating documentation."
53
- task :clobber do |t|
54
- rm_f readme
89
+ # Returns formatted headers.
90
+ def header(type, text = nil)
91
+ case type
92
+ when :h1
93
+ "#{text}\n#{'=' * text.length}"
94
+ when :h2
95
+ "#{text}\n#{'-' * text.length}"
96
+ end
55
97
  end
56
98
 
57
- ############################################################################
58
- end # :doc
59
- ############################################################################
99
+ # Compose the license details.
100
+ def license_details
101
+ return if @gem_spec.licenses.empty?
60
102
 
61
- task :clobber => 'doc:clobber'
103
+ %Q{
104
+ #{header :h2, 'License'}
105
+
106
+ #{@gem_title} is released under the #{@gem_spec.licenses.first} license.
107
+ }
108
+ end
109
+ end
62
110
  end
@@ -1,3 +1,5 @@
1
+ # This file holds the class that handles gem utilities.
2
+
1
3
  #--
2
4
  ################################################################################
3
5
  # Copyright (C) 2011 Travis Herrick #
@@ -28,52 +30,84 @@
28
30
  ################################################################################
29
31
  #++
30
32
 
31
- if RakeTasks::Gem.gem_file?
32
- ############################################################################
33
- namespace :gem do
34
- ############################################################################
33
+ # The main module for this gem.
34
+ module RakeTasks
35
+ # This class will handle gem utilities.
36
+ class Gem
37
+ class << self
38
+ # Check whether a gem spec file exists for this project.
39
+ def gemspec_file?
40
+ return !gem_spec_file.nil?
41
+ end
35
42
 
36
- gem_spec = RakeTasks::Gem.gem_spec
37
- gem_spec_file = RakeTasks::Gem.gem_spec_file
43
+ def gem_file?
44
+ return !gem_file.nil?
45
+ end
38
46
 
39
- file gem_spec.file_name =>
40
- [gem_spec_file, *Dir['lib/**/*.rb'], 'Gemfile', 'Gemfile.lock'] do |t|
41
- puts `gem build #{gem_spec_file}`
42
- end
47
+ # Returns the gem title.
48
+ # This is the gem name with underscores removed.
49
+ # Wherever an underscore is removed, the next letter is capitalized.
50
+ def gem_title(spec = gem_spec)
51
+ return nil unless spec.respond_to?(:name)
52
+ spec.name.split('_').map { |w| w.capitalize }.join('')
53
+ end
43
54
 
44
- desc "Build #{gem_spec.name} gem version #{gem_spec.version}."
45
- task :build => gem_spec.file_name
55
+ # Get the gem specification.
56
+ def gem_spec
57
+ Util.load_gemspec(gem_spec_file) if gemspec_file?
58
+ end
46
59
 
47
- desc "Install the #{gem_spec.name} gem."
48
- task :install => [gem_spec.file_name] do |t|
49
- puts `gem install #{gem_spec.file_name} --no-rdoc --no-ri`
50
- end
60
+ # Check for a gem spec file.
61
+ def gem_spec_file
62
+ Util.dir_glob('*.gemspec').first
63
+ end
51
64
 
52
- desc "Removes files associated with building and installing #{gem_spec.name}."
53
- task :clobber do |t|
54
- rm_f gem_spec.file_name
55
- end
65
+ def gem_file
66
+ @gem_file ||= Util.dir_glob('*.gem').first
67
+ end
68
+
69
+ # Returns the name and version from the specified gem specification.
70
+ def version(spec = gem_spec)
71
+ if spec.respond_to?(:name) && spec.respond_to?(:version)
72
+ "#{spec.name} version #{spec.version}"
73
+ end
74
+ end
75
+
76
+ # Updates the version in the gem specification file.
77
+ def version!(value, spec = gem_spec)
78
+ return unless gem_spec_file
56
79
 
57
- desc "Removes the gem file, builds, and installs."
58
- task :generate => ['gem:clobber', gem_spec.file_name, 'gem:install']
80
+ temp = StringIO.new
81
+ write_temp spec, temp, gem_spec_file, value
59
82
 
60
- desc "Show/Set the version number."
61
- task :version, [:number] do |t, args|
62
- if args[:number].nil?
63
- puts RakeTasks::Gem.version(gem_spec)
64
- else
65
- RakeTasks::Gem.version! args[:number], gem_spec
66
- gem_spec = RakeTasks::Gem.gem_spec
67
- puts RakeTasks::Gem.version(gem_spec)
83
+ temp.rewind
84
+ write_file gem_spec_file, temp
68
85
  end
69
- end
70
86
 
71
- ############################################################################
72
- end # :gem
73
- ############################################################################
87
+ private
74
88
 
75
- Rake::Task[:default].prerequisites.clear
76
- task :default => 'gem:build'
89
+ # Write the contents of a stream to a file.
90
+ def write_file(gem_spec_file, stream)
91
+ Util.open_file(gem_spec_file, 'w') do |file|
92
+ while line = stream.gets
93
+ file.puts line
94
+ end
95
+ end
96
+ end
77
97
 
78
- task :clobber => 'gem:clobber'
98
+ # Write the contents of a file to an in-memory stream object,
99
+ # changing the version.
100
+ def write_temp(spec, stream, gem_spec_file, version)
101
+ Util.open_file(gem_spec_file, 'r') do |file|
102
+ while line = file.gets
103
+ if line =~ /version *= *['"]#{spec.version}['"]/
104
+ stream.puts line.sub(/['"].*['"]/, "'#{version}'")
105
+ else
106
+ stream.puts line
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
79
113
  end
@@ -36,7 +36,13 @@ module RakeTasks
36
36
  # This class will handle parsing duties.
37
37
  class Parser
38
38
  def initialize
39
- @data = []
39
+ @data = {
40
+ tests: 0,
41
+ assertions: 0,
42
+ failures: 0,
43
+ errors: 0,
44
+ skips: 0,
45
+ }
40
46
  end
41
47
 
42
48
  # Parse a given line.
@@ -48,28 +54,21 @@ module RakeTasks
48
54
  puts line.strip #unless line.strip.empty?
49
55
  when /^\d+ tests, \d+ assertions, /
50
56
  puts line.strip
51
- @data << line.split(', ').map { |x| x.to_i }
57
+
58
+ data = line.split(', ').map { |x| x.to_i }
59
+
60
+ @data[:tests] += data[0]
61
+ @data[:assertions] += data[1]
62
+ @data[:failures] += data[2]
63
+ @data[:errors] += data[3]
64
+ @data[:skips] += data[4]
52
65
  end
53
66
  end
54
67
 
55
68
  # Calculate the summary and send it to standard out.
56
69
  def summarize
57
- tests = 0
58
- assertions = 0
59
- failures = 0
60
- errors = 0
61
- skips = 0
62
-
63
- @data.each do |status|
64
- tests = tests + status[0]
65
- assertions = assertions + status[1]
66
- failures = failures + status[2]
67
- errors = errors + status[3]
68
- skips = skips + status[4]
69
- end
70
-
71
- puts "%d tests, %d assertions, %d failures, %d errors, %d skips" % [
72
- tests, assertions, failures, errors, skips]
70
+ puts "%d tests, %d assertions, %d failures, %d errors, %d skips" %
71
+ @data.values
73
72
  end
74
73
  end
75
74
  end
@@ -0,0 +1,27 @@
1
+ require 'cane'
2
+ require 'cane/rake_task'
3
+
4
+ namespace :cane do
5
+ desc ''
6
+ Cane::RakeTask.new(:quality) do |cane|
7
+ cane.canefile = '.cane'
8
+ end
9
+
10
+ desc 'Check abc metrics with cane'
11
+ Cane::RakeTask.new(:warn) do |cane|
12
+ cane.canefile = '.cane'
13
+ cane.abc_max = 7
14
+ cane.no_doc = true
15
+ cane.no_style = true
16
+ end
17
+
18
+ desc 'Check code quality metrics with cane for all files'
19
+ Cane::RakeTask.new(:all) do |cane|
20
+ cane.canefile = '.cane'
21
+ cane.style_exclude = []
22
+ cane.abc_exclude = []
23
+ end
24
+ end
25
+
26
+ desc 'Run cane to check quality metrics'
27
+ task :cane => 'cane:quality'
@@ -0,0 +1,19 @@
1
+ if RakeTasks::Gem.gem_file?
2
+ require 'digest/sha2'
3
+
4
+ desc 'Generate a checksum for the current gem file'
5
+ task :checksum do |task|
6
+ gem_file = RakeTasks::Gem.gem_file
7
+ checksum = Digest::SHA512.new.hexdigest(File.read(gem_file))
8
+ checksum_file = File.basename(gem_file)
9
+ checksum_path = "checksum/#{checksum_file}.sha512"
10
+
11
+ puts checksum
12
+
13
+ FileUtils.mkdir_p 'checksum' unless File.directory?('checksum')
14
+
15
+ File.open(checksum_path, 'w') do |file|
16
+ file.write checksum
17
+ end
18
+ end
19
+ end