sleeping_king_studios-tasks 0.1.0 → 0.2.0.rc.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 03f905500258c4aa80931f51df259ef2315a42e1
4
- data.tar.gz: 37b0c7ebdf7af0066633302858264a6e019febbe
2
+ SHA256:
3
+ metadata.gz: ecf773989f8f4674aaa32d70e9292f1990cb43a6903c3a41077eb6465f195246
4
+ data.tar.gz: 0c8a09ca897e182933446ed099d1fd83f503aa359acbc8f8b565e4e3150ea093
5
5
  SHA512:
6
- metadata.gz: 9398af7d0a0ed84066289b79d2fa972dc89f016a2a57fd722a993d3e264beaed97e7227beeab2fa6d9ab42c8941b1f4fb016f3427c3330b1bf24901b5eb96776
7
- data.tar.gz: a7cd72d7ab6fc247f878714d5660f54245c15da97e851c91ff5598b59626dcbebe93f01218bb9c1b6867c0c0f894fb804fba433431a2ee60e2f565c6ab4bdeb6
6
+ metadata.gz: 40172813dfed6cb6f781d02d2997d192aebf44107fc781e13c235d3bb5432fd8b59e1f469755aeaa9af742465c7ee6685a0b4e6b2f6bc197bae5d915bf164e50
7
+ data.tar.gz: c6fe927bc9d5532d3c58f1995215a5341a010f94376f4004338925f6b16a9b3252a127071b2c6ffe1ed1a86be9076bb969b36c166b807a6e69992ffc51c5a91c
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Ci
6
+
7
+ - Add --format option, configuration value for RSpec, RSpec (Each) tasks.
8
+
3
9
  ## 0.1.0
4
10
 
5
11
  Initial commit.
data/README.md CHANGED
@@ -169,9 +169,11 @@ In addition, the cucumber step has the additional option:
169
169
 
170
170
  - `default_files [Array]`: Files that are always loaded when running Cucumber, such as step definitions or support files. By default, this includes 'step_definitions.rb' and the 'step_definitions' directory inside 'features'.
171
171
 
172
- `config.ci.rspec [Hash]`: Step configuration for the RSpec step. Has the same options as `config.ci.cucumber`, above, except for the aforementioned `default_files` option.
172
+ `config.ci.rspec [Hash]`: Step configuration for the RSpec step. Has the same options as `config.ci.cucumber`, above, except for the aforementioned `default_files` option. In addition, the RSpec task has the following option:
173
173
 
174
- `config.ci.rspec_each [Hash]`: Step configuration for the RSpec Each step.
174
+ - `format [String]`: The RSpec formatter used to format the spec results. Defaults to 'documentation'.
175
+
176
+ `config.ci.rspec_each [Hash]`: Step configuration for the RSpec Each step. Has the same configuration options as the RSpec step.
175
177
 
176
178
  `config.ci.rubocop [Hash]`: Step configuration for the RuboCop step.
177
179
 
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sleeping_king_studios/tasks/ci'
4
+
5
+ module SleepingKingStudios::Tasks::Ci
6
+ # Encapsulates the results of an Eslint call.
7
+ class EslintResults
8
+ # @param results [Hash] The raw results of the Eslint call.
9
+ def initialize results
10
+ @results = results
11
+ end
12
+
13
+ # @param other [EslintResults] The other results object to compare.
14
+ #
15
+ # @return [Boolean] True if the results are equal, otherwise false.
16
+ def == other
17
+ if other.is_a?(Array)
18
+ empty? ? other.empty? : @results == other
19
+ elsif other.is_a?(EslintResults)
20
+ to_h == other.to_h
21
+ else
22
+ false
23
+ end
24
+ end
25
+
26
+ # @return [Boolean] True if there are no inspected files, otherwise false.
27
+ def empty?
28
+ inspected_file_count.zero?
29
+ end
30
+
31
+ # @return [Integer] The total number of error results across all files.
32
+ def error_count
33
+ @error_count ||= @results.map { |hsh| hsh['errorCount'] }.sum
34
+ end
35
+
36
+ # @return [Boolean] True if there are no errors or warnings, otherwise
37
+ # false.
38
+ def failing?
39
+ !(error_count.zero? && warning_count.zero?)
40
+ end
41
+
42
+ # @return [Integer] The number of inspected files.
43
+ def inspected_file_count
44
+ @results.size
45
+ end
46
+
47
+ # @return [Boolean] Always false. Both warnings and errors trigger a failure
48
+ # state.
49
+ def pending?
50
+ false
51
+ end
52
+
53
+ # @return [Hash] The hash representation of the results.
54
+ def to_h
55
+ {
56
+ 'inspected_file_count' => inspected_file_count,
57
+ 'error_count' => error_count,
58
+ 'warning_count' => warning_count
59
+ }
60
+ end
61
+
62
+ # @return [String] The string representation of the results.
63
+ def to_s # rubocop:disable Metrics/AbcSize
64
+ str = +"#{pluralize inspected_file_count, 'file'} inspected"
65
+
66
+ str << ", #{pluralize error_count, 'error'}"
67
+
68
+ str << ", #{pluralize warning_count, 'warning'}"
69
+
70
+ str << "\n" unless non_empty_results.empty?
71
+
72
+ non_empty_results.each do |hsh|
73
+ str << "\n #{format_result_item(hsh)}"
74
+ end
75
+
76
+ str
77
+ end
78
+
79
+ # @return [Integer] The total number of warning results across all files.
80
+ def warning_count
81
+ @warning_count ||= @results.map { |hsh| hsh['warningCount'] }.sum
82
+ end
83
+
84
+ private
85
+
86
+ def format_result_item hsh
87
+ str = +relative_path(hsh['filePath'])
88
+
89
+ str << ": #{pluralize hsh['errorCount'], 'error'}"
90
+
91
+ str << ", #{pluralize hsh['warningCount'], 'warning'}"
92
+ end
93
+
94
+ def non_empty_results
95
+ @results.reject do |hsh|
96
+ hsh['errorCount'].zero? && hsh['warningCount'].zero?
97
+ end
98
+ end
99
+
100
+ def pluralize count, singular, plural = nil
101
+ "#{count} #{tools.integer.pluralize count, singular, plural}"
102
+ end
103
+
104
+ def relative_path path
105
+ path.sub(/\A#{Dir.getwd}#{File::SEPARATOR}?/, '')
106
+ end
107
+
108
+ def tools
109
+ SleepingKingStudios::Tools::Toolbelt.instance
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sleeping_king_studios/tasks/ci'
4
+ require 'sleeping_king_studios/tasks/process_runner'
5
+
6
+ module SleepingKingStudios::Tasks::Ci
7
+ # Service object to run Eslint as an external process with the specified
8
+ # parameters.
9
+ class EslintRunner < SleepingKingStudios::Tasks::ProcessRunner
10
+ def call env: {}, files: [], options: [], report: true
11
+ report = 'tmp/ci/eslint.json' if report && !report.is_a?(String)
12
+ command =
13
+ build_command(
14
+ :env => env,
15
+ :files => files,
16
+ :options => options,
17
+ :report => report
18
+ )
19
+
20
+ stream_process(command)
21
+
22
+ report ? load_report(:report => report) : []
23
+ end
24
+
25
+ private
26
+
27
+ def base_command
28
+ 'yarn eslint'
29
+ end
30
+
31
+ def build_options files:, options:, report:, **_kwargs
32
+ files = default_files if files.empty?
33
+ options += ['--format=json', "--output-file=#{report}"] if report
34
+
35
+ super :files => files, :options => options
36
+ end
37
+
38
+ def default_files
39
+ SleepingKingStudios::Tasks.configuration.ci.eslint.
40
+ fetch(:default_files, '"**/*.js"')
41
+ end
42
+
43
+ def load_report report:
44
+ raw = File.read report
45
+
46
+ JSON.parse raw
47
+ rescue
48
+ []
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sleeping_king_studios/tasks/ci'
4
+ require 'sleeping_king_studios/tasks/ci/eslint_results'
5
+ require 'sleeping_king_studios/tasks/ci/eslint_runner'
6
+
7
+ module SleepingKingStudios::Tasks::Ci
8
+ # Defines a Thor task for running the Eslint linter.
9
+ class EslintTask < SleepingKingStudios::Tasks::Task
10
+ def self.description
11
+ 'Runs the ESLint linter.'
12
+ end
13
+
14
+ def self.task_name
15
+ 'eslint'
16
+ end
17
+
18
+ def call *files
19
+ results = eslint_runner.call(:files => files)
20
+
21
+ EslintResults.new(results)
22
+ end
23
+
24
+ private
25
+
26
+ def eslint_runner
27
+ opts = %w(--color)
28
+
29
+ EslintRunner.new(:options => opts)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,106 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sleeping_king_studios/tasks/ci'
4
+
5
+ module SleepingKingStudios::Tasks::Ci
6
+ # Encapsulates the results of a Jest call.
7
+ class JestResults
8
+ # @param results [Hash] The raw results of the Jest call.
9
+ def initialize results
10
+ @results = results
11
+ end
12
+
13
+ # @param other [JestResults] The other results object to compare.
14
+ #
15
+ # @return [Boolean] True if the results are equal, otherwise false.
16
+ def == other
17
+ if other.is_a?(Hash)
18
+ empty? ? other.empty? : @results == other
19
+ elsif other.is_a?(JestResults)
20
+ to_h == other.to_h
21
+ else
22
+ false
23
+ end
24
+ end
25
+
26
+ # @return [Float] The duration value, in seconds.
27
+ def duration
28
+ (end_time - start_time).to_f / 1000
29
+ end
30
+
31
+ # @return [Boolean] True if there are no tests, otherwise false.
32
+ def empty?
33
+ test_count.zero?
34
+ end
35
+
36
+ # @return [Boolean] True if there are any failing tests, otherwise false.
37
+ def failing?
38
+ !failure_count.zero?
39
+ end
40
+
41
+ # @return [Integer] The number of failing tests.
42
+ def failure_count
43
+ @results.fetch('numFailedTests', 0)
44
+ end
45
+
46
+ # @return [Boolean] True if there are any pending tests, otherwise false.
47
+ def pending?
48
+ !pending_count.zero?
49
+ end
50
+
51
+ # @return [Intger] The number of pending tests.
52
+ def pending_count
53
+ @results.fetch('numPendingTests', 0)
54
+ end
55
+
56
+ # @return [Integer] The total number of tests.
57
+ def test_count
58
+ @results.fetch('numTotalTests', 0)
59
+ end
60
+
61
+ # @return [Hash] The hash representation of the results.
62
+ def to_h
63
+ {
64
+ 'duration' => duration,
65
+ 'failure_count' => failure_count,
66
+ 'pending_count' => pending_count,
67
+ 'test_count' => test_count
68
+ }
69
+ end
70
+
71
+ # @return [String] The string representation of the results.
72
+ def to_s # rubocop:disable Metrics/AbcSize
73
+ str = +pluralize(test_count, 'test')
74
+
75
+ str << ', ' << pluralize(failure_count, 'failure')
76
+
77
+ str << ', ' << pending_count.to_s << ' pending' if pending?
78
+
79
+ str << " in #{duration.round(2)} seconds"
80
+ end
81
+
82
+ private
83
+
84
+ def end_time
85
+ return 0 unless @results['testResults']
86
+
87
+ @results['testResults'].
88
+ map { |test_result| test_result['endTime'] }.
89
+ reduce do |memo, time|
90
+ [memo, time].max
91
+ end
92
+ end
93
+
94
+ def pluralize count, singular, plural = nil
95
+ "#{count} #{tools.integer.pluralize count, singular, plural}"
96
+ end
97
+
98
+ def start_time
99
+ @results['startTime'] || 0
100
+ end
101
+
102
+ def tools
103
+ SleepingKingStudios::Tools::Toolbelt.instance
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ require 'sleeping_king_studios/tasks/ci'
6
+ require 'sleeping_king_studios/tasks/process_runner'
7
+
8
+ module SleepingKingStudios::Tasks::Ci
9
+ # Service object to run Jest as an external process with the specified
10
+ # parameters.
11
+ class JestRunner < SleepingKingStudios::Tasks::ProcessRunner
12
+ def call env: {}, files: [], options: [], report: true
13
+ report = 'tmp/ci/jest.json' if report && !report.is_a?(String)
14
+ command =
15
+ build_command(
16
+ :env => env,
17
+ :files => files,
18
+ :options => options,
19
+ :report => report
20
+ )
21
+
22
+ stream_process(command)
23
+
24
+ report ? load_report(:report => report) : {}
25
+ end
26
+
27
+ private
28
+
29
+ def base_command
30
+ 'yarn jest'
31
+ end
32
+
33
+ def build_options files:, options:, report:, **_kwargs
34
+ options += ['--json', "--outputFile=#{report}"] if report
35
+
36
+ super :files => files, :options => options
37
+ end
38
+
39
+ def load_report report:
40
+ raw = File.read report
41
+
42
+ return {} if raw.empty?
43
+
44
+ JSON.parse raw
45
+ rescue
46
+ # :nocov:
47
+ {}
48
+ # :nocov:
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sleeping_king_studios/tasks/ci'
4
+ require 'sleeping_king_studios/tasks/ci/jest_results'
5
+ require 'sleeping_king_studios/tasks/ci/jest_runner'
6
+
7
+ module SleepingKingStudios::Tasks::Ci
8
+ # Defines a Thor task for running the full Jest (JavaScript) test suite.
9
+ class JestTask < SleepingKingStudios::Tasks::Task
10
+ def self.description
11
+ 'Runs the Jest test suite.'
12
+ end
13
+
14
+ def self.task_name
15
+ 'jest'
16
+ end
17
+
18
+ option :verbose,
19
+ :type => :boolean,
20
+ :desc => 'Output individual test results.'
21
+
22
+ def call *files
23
+ results = jest_runner.call(:files => files)
24
+
25
+ JestResults.new(results)
26
+ end
27
+
28
+ private
29
+
30
+ def default_verbose
31
+ SleepingKingStudios::Tasks.configuration.ci.jest.
32
+ fetch(:verbose, false)
33
+ end
34
+
35
+ def jest_runner
36
+ env = options.fetch('__env__', {})
37
+ opts = %w(--color)
38
+ opts << "--verbose=#{options.fetch('verbose', default_verbose)}"
39
+
40
+ JestRunner.new(:env => env, :options => opts)
41
+ end
42
+ end
43
+ end
@@ -21,6 +21,9 @@ module SleepingKingStudios::Tasks::Ci
21
21
  'rspec_each'
22
22
  end # class method task_name
23
23
 
24
+ option :format,
25
+ :type => :string,
26
+ :desc => 'The RSpec formatter to use. Defaults to the configuration.'
24
27
  option :quiet,
25
28
  :aliases => '-q',
26
29
  :type => :boolean,
@@ -73,6 +76,11 @@ module SleepingKingStudios::Tasks::Ci
73
76
  } # end results
74
77
  end # method build_totals
75
78
 
79
+ def default_format
80
+ SleepingKingStudios::Tasks.configuration.ci.rspec_each.
81
+ fetch(:format, :documentation)
82
+ end # method default_format
83
+
76
84
  def files_list groups
77
85
  groups = %w(spec) if groups.empty?
78
86
 
@@ -132,7 +140,15 @@ module SleepingKingStudios::Tasks::Ci
132
140
  end # method rspec_runner
133
141
 
134
142
  def run_file file
135
- results = rspec_runner.call(:files => [file])
143
+ opts = []
144
+ format = options.fetch('format', default_format)
145
+
146
+ if format && !quiet?
147
+ opts = %w(--color --tty)
148
+ opts << "--format=#{format}"
149
+ end # if
150
+
151
+ results = rspec_runner.call(:files => [file], :options => opts)
136
152
  results = RSpecResults.new(results)
137
153
 
138
154
  say "#{set_color results_state(results), results_color(results)} #{file}"
@@ -18,6 +18,9 @@ module SleepingKingStudios::Tasks::Ci
18
18
  option :coverage,
19
19
  :type => :boolean,
20
20
  :desc => 'Enable or disable coverage with SimpleCov, if available.'
21
+ option :format,
22
+ :type => :string,
23
+ :desc => 'The RSpec formatter to use. Defaults to the configuration.'
21
24
  option :gemfile,
22
25
  :type => :string,
23
26
  :desc => 'The Gemfile used to run the specs.',
@@ -41,6 +44,11 @@ module SleepingKingStudios::Tasks::Ci
41
44
 
42
45
  private
43
46
 
47
+ def default_format
48
+ SleepingKingStudios::Tasks.configuration.ci.rspec.
49
+ fetch(:format, :documentation)
50
+ end # method default_format
51
+
44
52
  def default_gemfile
45
53
  File.join(Dir.pwd, 'Gemfile')
46
54
  end # method default_gemfile
@@ -62,8 +70,10 @@ module SleepingKingStudios::Tasks::Ci
62
70
  env[:bundle_gemfile] = gemfile if gemfile
63
71
  env[:coverage] = false unless coverage
64
72
 
73
+ format = options.fetch('format', default_format)
74
+
65
75
  opts = %w(--color --tty)
66
- opts << '--format=documentation' unless quiet?
76
+ opts << "--format=#{format}" unless quiet?
67
77
 
68
78
  RSpecRunner.new(:env => env, :options => opts)
69
79
  end # method rspec_runner
@@ -1,6 +1,8 @@
1
1
  # lib/sleeping_king_studios/tasks/ci/tasks.thor
2
2
 
3
3
  require 'sleeping_king_studios/tasks/ci/cucumber_task'
4
+ require 'sleeping_king_studios/tasks/ci/eslint_task'
5
+ require 'sleeping_king_studios/tasks/ci/jest_task'
4
6
  require 'sleeping_king_studios/tasks/ci/rspec_task'
5
7
  require 'sleeping_king_studios/tasks/ci/rspec_each_task'
6
8
  require 'sleeping_king_studios/tasks/ci/rubocop_task'
@@ -12,6 +14,8 @@ module SleepingKingStudios::Tasks::Ci
12
14
  namespace :ci
13
15
 
14
16
  task SleepingKingStudios::Tasks::Ci::CucumberTask
17
+ task SleepingKingStudios::Tasks::Ci::EslintTask
18
+ task SleepingKingStudios::Tasks::Ci::JestTask
15
19
  task SleepingKingStudios::Tasks::Ci::RSpecTask
16
20
  task SleepingKingStudios::Tasks::Ci::RSpecEachTask
17
21
  task SleepingKingStudios::Tasks::Ci::RuboCopTask
@@ -5,6 +5,8 @@ require 'sleeping_king_studios/tools/toolbox/configuration'
5
5
  require 'sleeping_king_studios/tasks'
6
6
 
7
7
  module SleepingKingStudios::Tasks
8
+ # rubocop:disable Metrics/ClassLength
9
+
8
10
  # Task configuration options, grouped by namespace.
9
11
  class Configuration < SleepingKingStudios::Tools::Toolbox::Configuration
10
12
  # rubocop:disable Metrics/BlockLength
@@ -55,18 +57,36 @@ module SleepingKingStudios::Tasks
55
57
  :default_files => ['step_definitions', 'step_definitions.rb']
56
58
  } # end cucumber
57
59
 
60
+ option :eslint, :default =>
61
+ {
62
+ :class => 'SleepingKingStudios::Tasks::Ci::EslintTask',
63
+ :default_files => '"**/*.js"',
64
+ :require => 'sleeping_king_studios/tasks/ci/eslint_task',
65
+ :title => 'ESLint'
66
+ }
67
+
68
+ option :jest, :default =>
69
+ {
70
+ :class => 'SleepingKingStudios::Tasks::Ci::JestTask',
71
+ :require => 'sleeping_king_studios/tasks/ci/jest_task',
72
+ :title => 'Jest',
73
+ :verbose => false
74
+ }
75
+
58
76
  option :rspec, :default =>
59
77
  {
60
78
  :require => 'sleeping_king_studios/tasks/ci/rspec_task',
61
79
  :class => 'SleepingKingStudios::Tasks::Ci::RSpecTask',
62
- :title => 'RSpec'
80
+ :title => 'RSpec',
81
+ :format => 'documentation'
63
82
  } # end rspec
64
83
 
65
84
  option :rspec_each, :default =>
66
85
  {
67
86
  :require => 'sleeping_king_studios/tasks/ci/rspec_each_task',
68
87
  :class => 'SleepingKingStudios::Tasks::Ci::RSpecEachTask',
69
- :title => 'RSpec (Each)'
88
+ :title => 'RSpec (Each)',
89
+ :format => nil
70
90
  } # end rspec
71
91
 
72
92
  option :rubocop, :default =>
@@ -111,4 +131,5 @@ module SleepingKingStudios::Tasks
111
131
  option :template_paths, :default => [default_template_path]
112
132
  end # namespace
113
133
  end # class
134
+ # rubocop:enable Metrics/ClassLength
114
135
  end # module
@@ -11,6 +11,8 @@ module SleepingKingStudios::Tasks::File
11
11
 
12
12
  # Thor task for generating a new Ruby source file.
13
13
  class NewTask < SleepingKingStudios::Tasks::Task
14
+ class MissingTemplateError < StandardError; end
15
+
14
16
  def self.description
15
17
  'Creates a Ruby source file and corresponding spec file.'
16
18
  end # class method description
@@ -56,8 +58,8 @@ module SleepingKingStudios::Tasks::File
56
58
 
57
59
  return unless prompt_confirmation
58
60
 
59
- create_source_file
60
- create_spec_file
61
+ create_source_file unless dry_run?
62
+ create_spec_file unless dry_run?
61
63
 
62
64
  say 'Complete!', :green
63
65
  end # method file_name
@@ -78,10 +80,16 @@ module SleepingKingStudios::Tasks::File
78
80
  raise "file already exists at #{file_path}" unless force?
79
81
  end # method check_for_existing_file
80
82
 
83
+ def create_directories *directory_names
84
+ directory_path = directory_names.compact.join(File::SEPARATOR)
85
+
86
+ FileUtils.mkdir_p directory_path unless directory_path.empty?
87
+ end # method create_directories
88
+
81
89
  def create_source_file
82
90
  create_directories directory, *relative_path
83
91
 
84
- File.write file_path, rendered_source unless dry_run?
92
+ File.write file_path, rendered_source
85
93
  end # method create_file
86
94
 
87
95
  def create_spec_file
@@ -91,15 +99,9 @@ module SleepingKingStudios::Tasks::File
91
99
 
92
100
  create_directories 'spec', *relative_path
93
101
 
94
- File.write spec_path, rendered_spec unless dry_run?
102
+ File.write spec_path, rendered_spec
95
103
  end # method create_spec_file
96
104
 
97
- def create_directories *directory_names
98
- return if dry_run?
99
-
100
- FileUtils.mkdir_p directory_names.compact.join(File::SEPARATOR)
101
- end # method create_directories
102
-
103
105
  def find_template name
104
106
  template_paths.each do |template_dir|
105
107
  template_path = File.expand_path(File.join template_dir, name)
@@ -109,7 +111,7 @@ module SleepingKingStudios::Tasks::File
109
111
  return File.read(template_path)
110
112
  end # each
111
113
 
112
- nil
114
+ raise MissingTemplateError, "No template found for \"#{name}\""
113
115
  end # method find_template
114
116
 
115
117
  def preview
@@ -0,0 +1,13 @@
1
+ <%# lib/sleeping_king_studios/tasks/file/templates/ruby.rspec %>
2
+ <% require 'sleeping_king_studios/tools' %>
3
+ <% tools = SleepingKingStudios::Tools::Toolbelt.new %>
4
+ <% full_path = [*relative_path, file_name.sub(/_spec\z/, '')] %>
5
+ require '<%= full_path.join('/') %>'
6
+
7
+ <%
8
+ qualified_module =
9
+ full_path.map { |rel| tools.string.camelize(rel) }.join('::')
10
+ %>
11
+ RSpec.describe <%= qualified_module %> do
12
+ pending
13
+ end
@@ -0,0 +1,28 @@
1
+ <%# lib/sleeping_king_studios/tasks/file/templates/ruby.erb %>
2
+ <% require 'sleeping_king_studios/tools' %>
3
+ <% tools = SleepingKingStudios::Tools::Toolbelt.new %>
4
+ <% if relative_path.empty? %>
5
+ <% if defined?(superclass) %>
6
+ class <%= tools.string.camelize file_name %> < <%= superclass %>
7
+
8
+ end
9
+ <% else %>
10
+ module <%= tools.string.camelize file_name %>
11
+
12
+ end
13
+ <% end %>
14
+ <% else %>
15
+ require '<%= relative_path.join('/') %>'
16
+
17
+ module <%= relative_path.map { |rel| tools.string.camelize(rel) }.join('::') %>
18
+ <% if defined?(superclass) %>
19
+ class <%= tools.string.camelize file_name %> < <%= superclass %>
20
+
21
+ end
22
+ <% else %>
23
+ module <%= tools.string.camelize file_name %>
24
+
25
+ end
26
+ <% end %>
27
+ end
28
+ <% end %>
@@ -11,13 +11,13 @@ module SleepingKingStudios
11
11
  # Major version.
12
12
  MAJOR = 0
13
13
  # Minor version.
14
- MINOR = 1
14
+ MINOR = 2
15
15
  # Patch version.
16
16
  PATCH = 0
17
17
  # Prerelease version.
18
- PRERELEASE = nil
18
+ PRERELEASE = :rc
19
19
  # Build metadata.
20
- BUILD = nil
20
+ BUILD = 0
21
21
 
22
22
  class << self
23
23
  # Generates the gem version string from the Version constants.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sleeping_king_studios-tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0.rc.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob "Merlin" Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-10 00:00:00.000000000 Z
11
+ date: 2019-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -232,6 +232,12 @@ files:
232
232
  - lib/sleeping_king_studios/tasks/ci/cucumber_results.rb
233
233
  - lib/sleeping_king_studios/tasks/ci/cucumber_runner.rb
234
234
  - lib/sleeping_king_studios/tasks/ci/cucumber_task.rb
235
+ - lib/sleeping_king_studios/tasks/ci/eslint_results.rb
236
+ - lib/sleeping_king_studios/tasks/ci/eslint_runner.rb
237
+ - lib/sleeping_king_studios/tasks/ci/eslint_task.rb
238
+ - lib/sleeping_king_studios/tasks/ci/jest_results.rb
239
+ - lib/sleeping_king_studios/tasks/ci/jest_runner.rb
240
+ - lib/sleeping_king_studios/tasks/ci/jest_task.rb
235
241
  - lib/sleeping_king_studios/tasks/ci/results_helpers.rb
236
242
  - lib/sleeping_king_studios/tasks/ci/rspec_each_results.rb
237
243
  - lib/sleeping_king_studios/tasks/ci/rspec_each_task.rb
@@ -250,6 +256,8 @@ files:
250
256
  - lib/sleeping_king_studios/tasks/file.rb
251
257
  - lib/sleeping_king_studios/tasks/file/new_task.rb
252
258
  - lib/sleeping_king_studios/tasks/file/tasks.thor
259
+ - lib/sleeping_king_studios/tasks/file/templates/rspec.erb
260
+ - lib/sleeping_king_studios/tasks/file/templates/ruby.erb
253
261
  - lib/sleeping_king_studios/tasks/process_runner.rb
254
262
  - lib/sleeping_king_studios/tasks/task.rb
255
263
  - lib/sleeping_king_studios/tasks/task_group.rb
@@ -269,12 +277,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
269
277
  version: '0'
270
278
  required_rubygems_version: !ruby/object:Gem::Requirement
271
279
  requirements:
272
- - - ">="
280
+ - - ">"
273
281
  - !ruby/object:Gem::Version
274
- version: '0'
282
+ version: 1.3.1
275
283
  requirements: []
276
- rubyforge_project:
277
- rubygems_version: 2.6.11
284
+ rubygems_version: 3.0.3
278
285
  signing_key:
279
286
  specification_version: 4
280
287
  summary: A tasks toolkit for rapid development.