specimen 0.0.1.alpha.b → 0.0.2.alpha

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +60 -19
  3. data/VERSION +1 -1
  4. data/bin/specimen +2 -2
  5. data/lib/specimen/cli.rb +6 -20
  6. data/lib/specimen/command/base.rb +35 -0
  7. data/lib/specimen/command/base_group.rb +35 -0
  8. data/lib/specimen/command/exec_command_builder.rb +47 -0
  9. data/lib/specimen/command/runner/cukes_runner.rb +26 -0
  10. data/lib/specimen/command/runner/exec_runner.rb +37 -0
  11. data/lib/specimen/command/runner/path_runner.rb +24 -0
  12. data/lib/specimen/command/runner/specs_runner.rb +25 -0
  13. data/lib/specimen/command/test_runner.rb +58 -0
  14. data/lib/specimen/command.rb +209 -0
  15. data/lib/specimen/commands/cukes/cukes_command.rb +9 -0
  16. data/lib/specimen/commands/exec/exec_command.rb +9 -0
  17. data/lib/specimen/commands/gem_help/USAGE +11 -0
  18. data/lib/specimen/commands/gem_help/gem_help_command.rb +23 -0
  19. data/lib/specimen/commands/init/USAGE +38 -0
  20. data/lib/specimen/commands/init/init_command.rb +49 -0
  21. data/lib/specimen/commands/specs/specs_command.rb +9 -0
  22. data/lib/specimen/extensions/ruby/hash.rb +1 -0
  23. data/lib/specimen/generator/configs/specimen_project_config.rb +122 -0
  24. data/lib/specimen/generator/cucumber/cucumber_project_generator.rb +28 -0
  25. data/lib/specimen/generator/cucumber/templates/config/cucumber.yml.tt +1 -0
  26. data/lib/specimen/generator/cucumber/templates/features/examples/add_numbers.feature.tt +9 -0
  27. data/lib/specimen/generator/cucumber/templates/features/support/env.rb.tt +0 -0
  28. data/lib/specimen/generator/file_by_template.rb +6 -4
  29. data/lib/specimen/generator/generator_base.rb +9 -0
  30. data/lib/specimen/generator/project/project_root_generator.rb +33 -0
  31. data/lib/specimen/generator/project/specimen_project_generator.rb +25 -0
  32. data/lib/specimen/generator/project/templates/root/.gitignore.tt +4 -0
  33. data/lib/specimen/generator/project/templates/root/config/specimen.yml.tt +38 -0
  34. data/lib/specimen/generator/project_generator_base.rb +34 -0
  35. data/lib/specimen/generator/rspec/rspec_project_generator.rb +28 -0
  36. data/lib/specimen/generator/rspec/templates/config/.rspec.tt +5 -0
  37. data/lib/specimen/generator/rspec/templates/spec/examples/example_spec.rb.tt +13 -0
  38. data/lib/specimen/generator/rspec/templates/spec/spec_helper.rb.tt +15 -0
  39. data/lib/specimen/generator.rb +8 -1
  40. data/lib/specimen/runtime/yml_parser.rb +49 -0
  41. data/lib/specimen/runtime.rb +84 -0
  42. data/lib/specimen/version.rb +4 -6
  43. data/lib/specimen.rb +11 -3
  44. metadata +99 -12
  45. data/lib/specimen/cli/default_command.rb +0 -37
  46. data/lib/specimen/generator/specimen_project.rb +0 -73
  47. data/lib/specimen/generator/specimen_project_config.rb +0 -54
  48. data/lib/specimen/generator/templates/specimen/specimen.yml.tt +0 -1
  49. /data/lib/specimen/generator/{templates/gemrc.tt → project/templates/root/.gemrc.tt} +0 -0
  50. /data/lib/specimen/generator/{templates/rbenv-gemsets.tt → project/templates/root/.rbenv-gemsets.tt} +0 -0
  51. /data/lib/specimen/generator/{templates/rubocop.yml.tt → project/templates/root/.rubocop.yml.tt} +0 -0
  52. /data/lib/specimen/generator/{templates → project/templates/root}/Gemfile.tt +0 -0
  53. /data/lib/specimen/generator/{templates → project/templates/root}/README.md.tt +0 -0
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Specimen
4
- # Returns the currently loaded version of \Rails as a +Gem::Version+.
5
4
  def self.gem_version
6
5
  Gem::Version.new VERSION::STRING
7
6
  end
@@ -9,10 +8,9 @@ module Specimen
9
8
  module VERSION
10
9
  MAJOR = 0
11
10
  MINOR = 0
12
- TINY = 1
13
- PRE = "alpha.b"
11
+ TINY = 2
12
+ PRE = 'alpha'
14
13
 
15
- STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
14
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
16
15
  end
17
-
18
- end
16
+ end
data/lib/specimen.rb CHANGED
@@ -1,16 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support'
4
+ require 'colorize'
5
+ require 'pathname'
4
6
 
5
7
  # require Ruby extensions
6
8
  require 'specimen/extensions/ruby/hash'
7
9
 
10
+ require 'specimen/command'
11
+ require 'specimen/runtime'
8
12
  require 'specimen/version'
9
13
 
10
14
  module Specimen
11
15
  extend ActiveSupport::Autoload
12
16
 
13
- autoload :CLI
14
- autoload :Commands
15
- autoload :Generator
17
+ class << self
18
+ attr_accessor :runtime
19
+
20
+ def init_wd_path
21
+ @init_wd_path ||= Pathname.getwd
22
+ end
23
+ end
16
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: specimen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.alpha.b
4
+ version: 0.0.2.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Witkowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-11 00:00:00.000000000 Z
11
+ date: 2024-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '7.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: dotenv
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: thor
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +66,20 @@ dependencies:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
68
  version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: cucumber
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '9.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '9.2'
41
83
  - !ruby/object:Gem::Dependency
42
84
  name: pry
43
85
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +108,20 @@ dependencies:
66
108
  - - "~>"
67
109
  - !ruby/object:Gem::Version
68
110
  version: 13.2.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '3.13'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.13'
69
125
  - !ruby/object:Gem::Dependency
70
126
  name: rubocop
71
127
  requirement: !ruby/object:Gem::Requirement
@@ -92,25 +148,56 @@ files:
92
148
  - bin/specimen
93
149
  - lib/specimen.rb
94
150
  - lib/specimen/cli.rb
95
- - lib/specimen/cli/default_command.rb
151
+ - lib/specimen/command.rb
152
+ - lib/specimen/command/base.rb
153
+ - lib/specimen/command/base_group.rb
154
+ - lib/specimen/command/exec_command_builder.rb
155
+ - lib/specimen/command/runner/cukes_runner.rb
156
+ - lib/specimen/command/runner/exec_runner.rb
157
+ - lib/specimen/command/runner/path_runner.rb
158
+ - lib/specimen/command/runner/specs_runner.rb
159
+ - lib/specimen/command/test_runner.rb
96
160
  - lib/specimen/commands.rb
161
+ - lib/specimen/commands/cukes/cukes_command.rb
162
+ - lib/specimen/commands/exec/exec_command.rb
163
+ - lib/specimen/commands/gem_help/USAGE
164
+ - lib/specimen/commands/gem_help/gem_help_command.rb
165
+ - lib/specimen/commands/init/USAGE
166
+ - lib/specimen/commands/init/init_command.rb
167
+ - lib/specimen/commands/specs/specs_command.rb
97
168
  - lib/specimen/extensions/ruby/hash.rb
98
169
  - lib/specimen/generator.rb
170
+ - lib/specimen/generator/configs/specimen_project_config.rb
171
+ - lib/specimen/generator/cucumber/cucumber_project_generator.rb
172
+ - lib/specimen/generator/cucumber/templates/config/cucumber.yml.tt
173
+ - lib/specimen/generator/cucumber/templates/features/examples/add_numbers.feature.tt
174
+ - lib/specimen/generator/cucumber/templates/features/support/env.rb.tt
99
175
  - lib/specimen/generator/file_by_template.rb
100
- - lib/specimen/generator/specimen_project.rb
101
- - lib/specimen/generator/specimen_project_config.rb
102
- - lib/specimen/generator/templates/Gemfile.tt
103
- - lib/specimen/generator/templates/README.md.tt
104
- - lib/specimen/generator/templates/gemrc.tt
105
- - lib/specimen/generator/templates/rbenv-gemsets.tt
106
- - lib/specimen/generator/templates/rubocop.yml.tt
107
- - lib/specimen/generator/templates/specimen/specimen.yml.tt
176
+ - lib/specimen/generator/generator_base.rb
177
+ - lib/specimen/generator/project/project_root_generator.rb
178
+ - lib/specimen/generator/project/specimen_project_generator.rb
179
+ - lib/specimen/generator/project/templates/root/.gemrc.tt
180
+ - lib/specimen/generator/project/templates/root/.gitignore.tt
181
+ - lib/specimen/generator/project/templates/root/.rbenv-gemsets.tt
182
+ - lib/specimen/generator/project/templates/root/.rubocop.yml.tt
183
+ - lib/specimen/generator/project/templates/root/Gemfile.tt
184
+ - lib/specimen/generator/project/templates/root/README.md.tt
185
+ - lib/specimen/generator/project/templates/root/config/specimen.yml.tt
186
+ - lib/specimen/generator/project_generator_base.rb
187
+ - lib/specimen/generator/rspec/rspec_project_generator.rb
188
+ - lib/specimen/generator/rspec/templates/config/.rspec.tt
189
+ - lib/specimen/generator/rspec/templates/spec/examples/example_spec.rb.tt
190
+ - lib/specimen/generator/rspec/templates/spec/spec_helper.rb.tt
191
+ - lib/specimen/runtime.rb
192
+ - lib/specimen/runtime/yml_parser.rb
108
193
  - lib/specimen/version.rb
109
194
  homepage: https://github.com/dev-dots/specimen
110
195
  licenses:
111
196
  - MIT
112
197
  metadata:
113
198
  bug_tracker_uri: https://github.com/dev-dots/specimen/issues
199
+ homepage_uri: https://github.com/dev-dots/specimen
200
+ source_code_uri: https://github.com/dev-dots/specimen
114
201
  rubygems_mfa_required: 'true'
115
202
  post_install_message:
116
203
  rdoc_options: []
@@ -120,7 +207,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
207
  requirements:
121
208
  - - ">="
122
209
  - !ruby/object:Gem::Version
123
- version: '3.0'
210
+ version: '3.1'
124
211
  required_rubygems_version: !ruby/object:Gem::Requirement
125
212
  requirements:
126
213
  - - ">="
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'specimen/generator'
4
-
5
- module Specimen
6
- module CLI
7
- class DefaultCommand < Commands::BaseCommand
8
- include Generator
9
-
10
- namespace :default
11
-
12
- def self.banner(task, namespace = true, subcommand = false)
13
- "#{basename} #{task.name}"
14
- end
15
-
16
- def self.source_root
17
- File.dirname(__FILE__)
18
- end
19
-
20
- desc 'init', 'Initialize a new Specimen project'
21
-
22
- method_option :project_name, aliases: %w[--name -n], type: :string, default: ''
23
- method_option :api_only, type: :boolean, default: false
24
- method_option :cucumber, type: :boolean, default: true
25
-
26
- def init
27
- SpecimenProject.start([options.dup])
28
- end
29
-
30
- desc 'commands', 'print all commands'
31
-
32
- def commands
33
- [DefaultCommand].each { |cmd| cmd.new.help }
34
- end
35
- end
36
- end
37
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'specimen_project_config'
4
-
5
- module Specimen
6
- module Generator
7
- class SpecimenProject < Commands::BaseGroupCommand
8
- include Generator
9
-
10
- argument :project_options
11
-
12
- def self.source_root
13
- "#{File.dirname(__FILE__)}/templates"
14
- end
15
-
16
- def initialize(_, _, _)
17
- super
18
- @opts = project_options.to_h.deep_symbolize_keys
19
- end
20
-
21
- def start
22
- say('Initialize new Specimen project', Color::BOLD)
23
-
24
- @opts[:project_name].empty? ? ask_for_name : @opts[:project_name]
25
- @opts[:destination_root] = destination_root
26
- @config = SpecimenProjectConfig.new(@opts)
27
- end
28
-
29
- def execute
30
- empty_directory(@config.project_name)
31
- create_root_files
32
-
33
- inside @config.project_root do
34
- if @config.cucumber?
35
- empty_directory('features/step_definitions')
36
- empty_directory('features/support')
37
- end
38
-
39
- empty_directory('spec/support')
40
- end
41
- end
42
-
43
- def finish
44
- say("created new Specimen project in #{@config.project_root}", Color::GREEN)
45
- end
46
-
47
- no_commands do
48
- def ask_for_name
49
- @opts[:project_name] = ask('What is the name of the project?')
50
- end
51
-
52
- def create_root_files
53
- project_root_files.each do |file|
54
- dest = dot_files.include?(file) ? ".#{file}" : file
55
- create_file_by_template(file, "#{@config.project_root}/#{dest}", @config.data)
56
- end
57
- end
58
-
59
- def dot_files
60
- %w[gemrc rbenv-gemsets rubocop.yml]
61
- end
62
-
63
- def project_root_files
64
- %w[gemrc
65
- rbenv-gemsets
66
- rubocop.yml
67
- Gemfile
68
- README.md]
69
- end
70
- end
71
- end
72
- end
73
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Specimen
4
- module Generator
5
- class SpecimenProjectConfig
6
- GEM_LIST = %w[
7
- activesupport dotenv ffaker rest-client thor uuid
8
- cucumber cuke_modeler parallel_tests rspec
9
- selenium-webdriver watir
10
- debug pry rubocop
11
- ].freeze
12
-
13
- def initialize(options)
14
- @options = options
15
- end
16
-
17
- def data
18
- @data ||= {
19
- project_name: project_name,
20
- gems: project_gems,
21
- project_root: project_root,
22
- api_only: api_only?,
23
- cucumber: cucumber?
24
- }
25
- end
26
-
27
- def project_gems
28
- gems.reject! { |gem| gem.eql?('selenium-webdriver') || gem.eql?('watir') } if api_only?
29
- gems.reject! { |gem| gem.eql?('cucumber') || gem.eql?('cuke_modeler') } unless cucumber?
30
- gems.sort
31
- end
32
-
33
- def project_root
34
- "#{@options[:destination_root]}/#{project_name}"
35
- end
36
-
37
- def project_name
38
- @options[:project_name]
39
- end
40
-
41
- def gems
42
- @gems ||= GEM_LIST.dup
43
- end
44
-
45
- def api_only?
46
- @options[:api_only]
47
- end
48
-
49
- def cucumber?
50
- @options[:cucumber]
51
- end
52
- end
53
- end
54
- end
@@ -1 +0,0 @@
1
- project_name: 'Foo'