rolemodel-rails 1.0.0 → 2.0.1

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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +20 -10
  3. data/lib/generators/rolemodel/all_generator.rb +1 -1
  4. data/lib/generators/rolemodel/editors/editors_generator.rb +1 -1
  5. data/lib/generators/rolemodel/github/github_generator.rb +1 -1
  6. data/lib/generators/rolemodel/good_job/good_job_generator.rb +1 -1
  7. data/lib/generators/rolemodel/heroku/heroku_generator.rb +1 -1
  8. data/lib/generators/rolemodel/kaminari/kaminari_generator.rb +1 -1
  9. data/lib/generators/rolemodel/linters/all_generator.rb +1 -1
  10. data/lib/generators/rolemodel/linters/eslint/eslint_generator.rb +1 -1
  11. data/lib/generators/rolemodel/linters/rubocop/rubocop_generator.rb +1 -1
  12. data/lib/generators/rolemodel/lograge/lograge_generator.rb +1 -1
  13. data/lib/generators/rolemodel/mailers/mailers_generator.rb +1 -1
  14. data/lib/generators/rolemodel/optics/all_generator.rb +1 -1
  15. data/lib/generators/rolemodel/optics/base/base_generator.rb +2 -2
  16. data/lib/generators/rolemodel/optics/icons/README.md +6 -1
  17. data/lib/generators/rolemodel/optics/icons/icons_generator.rb +15 -10
  18. data/lib/generators/rolemodel/optics/icons/templates/app/helpers/icon_helper.rb.tt +4 -2
  19. data/lib/generators/rolemodel/react/react_generator.rb +1 -1
  20. data/lib/generators/rolemodel/readme/readme_generator.rb +1 -1
  21. data/lib/generators/rolemodel/saas/all_generator.rb +1 -1
  22. data/lib/generators/rolemodel/saas/devise/devise_generator.rb +1 -1
  23. data/lib/generators/rolemodel/semaphore/semaphore_generator.rb +1 -1
  24. data/lib/generators/rolemodel/simple_form/simple_form_generator.rb +1 -1
  25. data/lib/generators/rolemodel/slim/slim_generator.rb +1 -1
  26. data/lib/generators/rolemodel/soft_destroyable/soft_destroyable_generator.rb +1 -1
  27. data/lib/generators/rolemodel/source_map/source_map_generator.rb +1 -1
  28. data/lib/generators/rolemodel/tailored_select/tailored_select_generator.rb +1 -1
  29. data/lib/generators/rolemodel/testing/README.md +4 -1
  30. data/lib/generators/rolemodel/testing/all_generator.rb +4 -4
  31. data/lib/generators/rolemodel/testing/factory_bot/factory_bot_generator.rb +1 -1
  32. data/lib/generators/rolemodel/testing/jasmine_playwright/jasmine_playwright_generator.rb +2 -2
  33. data/lib/generators/rolemodel/testing/parallel_tests/parallel_tests_generator.rb +1 -1
  34. data/lib/generators/rolemodel/testing/rspec/README.md +1 -1
  35. data/lib/generators/rolemodel/testing/rspec/USAGE +1 -1
  36. data/lib/generators/rolemodel/testing/rspec/rspec_generator.rb +16 -16
  37. data/lib/generators/rolemodel/testing/rspec/templates/{rails_helper.rb → spec/rails_helper.rb.tt} +4 -0
  38. data/lib/generators/rolemodel/testing/rspec/templates/spec/support/capybara_config.rb.tt +9 -0
  39. data/lib/generators/rolemodel/testing/rspec/templates/{support/capybara_drivers.rb → spec/support/capybara_drivers.rb.tt} +0 -2
  40. data/lib/generators/rolemodel/testing/test_prof/test_prof_generator.rb +1 -1
  41. data/lib/generators/rolemodel/testing/vitest/vitest_generator.rb +1 -1
  42. data/lib/generators/rolemodel/ui_components/all_generator.rb +1 -1
  43. data/lib/generators/rolemodel/ui_components/flash/flash_generator.rb +1 -1
  44. data/lib/generators/rolemodel/ui_components/modals/modals_generator.rb +1 -1
  45. data/lib/generators/rolemodel/ui_components/navbar/navbar_generator.rb +1 -1
  46. data/lib/generators/rolemodel/webpack/webpack_generator.rb +1 -1
  47. data/lib/rolemodel/engine.rb +3 -1
  48. data/lib/rolemodel/generator_base.rb +17 -0
  49. data/lib/{generators/rolemodel/optics/icons/templates/app/icon_builders → rolemodel/optics}/custom_icon_builder.rb +1 -1
  50. data/lib/{generators/rolemodel/optics/icons/templates/app/icon_builders → rolemodel/optics}/feather_icon_builder.rb +1 -1
  51. data/lib/{generators/rolemodel/optics/icons/templates/app/icon_builders → rolemodel/optics}/icon_builder.rb +10 -19
  52. data/lib/{generators/rolemodel/optics/icons/templates/app/icon_builders → rolemodel/optics}/lucide_icon_builder.rb +1 -1
  53. data/lib/{generators/rolemodel/optics/icons/templates/app/icon_builders → rolemodel/optics}/material_icon_builder.rb +1 -1
  54. data/lib/{generators/rolemodel/optics/icons/templates/app/icon_builders → rolemodel/optics}/phosphor_icon_builder.rb +1 -1
  55. data/lib/{generators/rolemodel/optics/icons/templates/app/icon_builders → rolemodel/optics}/tabler_icon_builder.rb +1 -1
  56. data/lib/rolemodel/optics.rb +9 -0
  57. data/lib/rolemodel/utility/task_tools.rb +42 -0
  58. data/lib/rolemodel/utility.rb +3 -0
  59. data/lib/rolemodel/version.rb +1 -1
  60. data/lib/rolemodel-rails.rb +2 -0
  61. metadata +37 -24
  62. data/lib/generators/rolemodel/base_generator.rb +0 -16
  63. data/lib/generators/rolemodel/testing/rspec/templates/support/capybara_testid.rb +0 -5
  64. data/lib/generators/templates/generator/%filename%.rb.tt +0 -11
  65. data/lib/generators/templates/generator/README.md.tt +0 -11
  66. data/lib/generators/templates/generator/USAGE.tt +0 -5
  67. data/lib/generators/templates/generator_spec/%filename%_spec.rb.tt +0 -5
  68. /data/lib/generators/rolemodel/testing/rspec/templates/{spec_helper.rb → spec/spec_helper.rb.tt} +0 -0
  69. /data/lib/generators/rolemodel/testing/rspec/templates/{support → spec/support}/helpers/action_cable_helper.rb +0 -0
  70. /data/lib/generators/rolemodel/testing/rspec/templates/{support → spec/support}/helpers/capybara_helper.rb +0 -0
  71. /data/lib/generators/rolemodel/testing/rspec/templates/{support → spec/support}/helpers/playwright_helper.rb +0 -0
  72. /data/lib/generators/rolemodel/testing/rspec/templates/{support → spec/support}/helpers/select_helper.rb +0 -0
  73. /data/lib/generators/rolemodel/testing/rspec/templates/{support → spec/support}/helpers/test_element_helper.rb +0 -0
  74. /data/lib/generators/rolemodel/testing/rspec/templates/{support/helpers.rb → spec/support/helpers.rb.tt} +0 -0
  75. /data/lib/{generators/rolemodel → rolemodel}/replace_content_helper.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0fc94b9f1782c5251c05b2ec1e9f8de40ff8021383c4d358c1cf67dae0c2e86
4
- data.tar.gz: 8eb5debdc363920c4b21f06381b4c6789162a5dcd984c40ba377fecfb1eb90a2
3
+ metadata.gz: 2cbd3c1b81aa62c00354cd5faa3cc5bea47c48c2ede2c86470b391372751db9c
4
+ data.tar.gz: c9bd14d2787122907369daaf9bfa26b63d0cc882449247ae5da26af15de9586f
5
5
  SHA512:
6
- metadata.gz: be60dc3620a2d22b8ed1148a1966219c830d685e48df12ed5abafd884cd1f749f4251360173f42b355b10865238f000a95da825624c21ee898fde25c7c9dc9d9
7
- data.tar.gz: b76c9375e38755a22e66aff75109727a7a03273d9ee4dc9e44049774259f2b60ca793f3a550b79550cdd729cca9154e400547a2472f2565fe18fedb05cfd10e3
6
+ metadata.gz: d79a388d4221587a777dddeddaea260f389924272c49299fed129b7f5e364df154fa09161217b0087d975168fda59ce6c75e7fd36468c0b0a5b5767cddecea28
7
+ data.tar.gz: 960b18a4e997a18092a6bacd69f0833da0154a54717d41215b401f4f8c9cf08034ba8aa10f4daf0fef560a7bd54154a470d650e4427122b3db6c47ac687087ee
data/README.md CHANGED
@@ -14,7 +14,7 @@ Attempts to solve the pain of:
14
14
  The rolemodel-rails gem expects to be added to an existing Rails project. Typically those are started with:
15
15
 
16
16
  ```shell
17
- rails new <app-name> --javascript=webpack --database=postgresql --skip-test
17
+ rails new <app-name> --javascript=webpack --database=postgresql --skip-test --skip-solid
18
18
  ```
19
19
 
20
20
  The Devise generator requires your database to exist before running.
@@ -28,14 +28,15 @@ rails db:create
28
28
  Add this line to your application's Gemfile:
29
29
 
30
30
  ```ruby
31
- group :development do
32
- gem 'rolemodel-rails', github: 'RoleModel/rolemodel_rails'
33
- end
31
+ gem 'rolemodel-rails'
34
32
  ```
35
33
 
34
+ > [!IMPORTANT]
35
+ > We used to recommend putting rolemodel-rails in the development gem group. This is no longer supported, because some Rolemodel namespaced utility modules and classes are expected to be available at runtime.
36
+
36
37
  And then execute:
37
38
 
38
- $ bundle
39
+ $ bundle install
39
40
 
40
41
  ## Usage
41
42
 
@@ -115,13 +116,9 @@ e.g.
115
116
  bin/new_generator testing/fantasitic_specs 'A Fantastic Testing Framework'
116
117
  ```
117
118
 
118
- We use the embeded Rails apps (`example_rails*`) to test generators against. They reference the rolemodel-rails gem by local path,
119
+ We use the embeded Rails apps (`example_rails_current` & `example_rails_legacy`) to test generators against. They reference the rolemodel-rails gem by local path,
119
120
  so you can navigate into one of them and run your generator for immediate feedback while developing.
120
121
 
121
- > [!IMPORTANT]
122
- > Before submitting a PR, run `bin/bump_version` to ensure the Gem builds successfully & that everything continues to stay in sync & up-to-date.<br /><br />
123
- > For very small changes & bug fixes, prefer `bin/bump_version --patch`.
124
-
125
122
  ## Testing
126
123
 
127
124
  Generator specs should be added to the [spec](./spec) directory.
@@ -146,6 +143,19 @@ RSpec.describe Rolemodel::Testing::JasminePlaywrightGenerator, type: :generator
146
143
  end
147
144
  ```
148
145
 
146
+ If the generator you're testing depends on being run after another generator, you should run that one first.
147
+
148
+ e.g.
149
+
150
+ ```ruby
151
+ RSpec.describe Rolemodel::MyGenerator, type: :generator do
152
+ before do
153
+ run_generator_against_test_app(generator: ::Rolemodel::PrereqGenerator)
154
+ run_generator_against_test_app
155
+ end
156
+ end
157
+ ```
158
+
149
159
  Additional information about testing generators and the available assertions & matchers can be found at the following resources.
150
160
 
151
161
  * [Rails Guide](https://guides.rubyonrails.org/generators.html#testing-generators)
@@ -1,5 +1,5 @@
1
1
  module Rolemodel
2
- class AllGenerator < BaseGenerator
2
+ class AllGenerator < GeneratorBase
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  def run_all_the_generators
@@ -4,7 +4,7 @@ require_relative 'vscode_helpers'
4
4
 
5
5
  module Rolemodel
6
6
  # Add standard editorconfig and any extensions to enable it
7
- class EditorsGenerator < BaseGenerator
7
+ class EditorsGenerator < GeneratorBase
8
8
  include Rolemodel::VSCodeHelpers
9
9
 
10
10
  # This is bringing in the root from this gem, so we only modify
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class GithubGenerator < BaseGenerator
4
+ class GithubGenerator < GeneratorBase
5
5
  GITHUB_ACTIONS_REPO = 'https://github.com/RoleModel/actions.git'
6
6
  # Files which are both used by the gem source and copied to the target app without modification
7
7
  # are placed in the `.github` folder at the top level of this repository. This folder is then
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class GoodJobGenerator < BaseGenerator
4
+ class GoodJobGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def install_good_job
@@ -1,5 +1,5 @@
1
1
  module Rolemodel
2
- class HerokuGenerator < BaseGenerator
2
+ class HerokuGenerator < GeneratorBase
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  def install_app_json
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class KaminariGenerator < BaseGenerator
4
+ class KaminariGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def install_kaminari
@@ -1,6 +1,6 @@
1
1
  module Rolemodel
2
2
  module Linters
3
- class AllGenerator < BaseGenerator
3
+ class AllGenerator < GeneratorBase
4
4
  source_root File.expand_path('templates', __dir__)
5
5
 
6
6
  def run_all_the_generators
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Linters
5
- class EslintGenerator < BaseGenerator
5
+ class EslintGenerator < GeneratorBase
6
6
  include ReplaceContentHelper
7
7
  source_root File.expand_path('templates', __dir__)
8
8
 
@@ -3,7 +3,7 @@
3
3
  module Rolemodel
4
4
  module Linters
5
5
  # Install the standard rubocop and a custom cop
6
- class RubocopGenerator < BaseGenerator
6
+ class RubocopGenerator < GeneratorBase
7
7
  source_root File.expand_path('templates', __dir__)
8
8
 
9
9
  def install_rubocop
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class LogrageGenerator < BaseGenerator
4
+ class LogrageGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def install_lograge
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class MailersGenerator < BaseGenerator
4
+ class MailersGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def install_premailer_rails
@@ -1,6 +1,6 @@
1
1
  module Rolemodel
2
2
  module Optics
3
- class AllGenerator < Rolemodel::BaseGenerator
3
+ class AllGenerator < Rolemodel::GeneratorBase
4
4
  source_root File.expand_path('templates', __dir__)
5
5
 
6
6
  def run_all_the_generators
@@ -1,6 +1,6 @@
1
1
  module Rolemodel
2
2
  module Optics
3
- class BaseGenerator < Rolemodel::BaseGenerator
3
+ class BaseGenerator < Rolemodel::GeneratorBase
4
4
  source_root File.expand_path('templates', __dir__)
5
5
 
6
6
  def add_optics_package
@@ -12,7 +12,7 @@ module Rolemodel
12
12
  def copy_templates
13
13
  say 'importing stylesheet', :green
14
14
 
15
- prepend_to_file 'app/assets/stylesheets/application.scss', <<~SCSS
15
+ prepend_to_file Dir.glob('app/assets/stylesheets/application.*').first, <<~SCSS
16
16
  @import '@rolemodel/optics/dist/css/optics';
17
17
  SCSS
18
18
  end
@@ -4,4 +4,9 @@
4
4
 
5
5
  ## What you get
6
6
 
7
- Adds icon helper for handling material icons and custom icons
7
+ Adds icon helper for handling icon generation using the provider of your choice.
8
+
9
+ ## Icon Builder Customization
10
+
11
+ Run the generator with the `-i` option to install the IconBuilders themselves in your
12
+ application's `lib/rolemodel/optics` directory.
@@ -3,7 +3,8 @@
3
3
  module Rolemodel
4
4
  module Optics
5
5
  # Generates the icon helper and icon builders for the chosen icon library
6
- class IconsGenerator < Rolemodel::BaseGenerator
6
+ class IconsGenerator < Rolemodel::GeneratorBase
7
+ BUILDER_DIR = 'rolemodel/optics'
7
8
  SUPPORTED_LIBRARIES = HashWithIndifferentAccess.new(
8
9
  material: 'filled, size, weight, emphasis, additional_classes, color, hover_text',
9
10
  phosphor: 'duotone, filled, size, weight, additional_classes, color, hover_text',
@@ -14,30 +15,34 @@ module Rolemodel
14
15
  ).freeze
15
16
 
16
17
  source_root File.expand_path('templates', __dir__)
18
+ class_option :install_builders, aliases: '-i', type: :boolean, default: false,
19
+ desc: "Install IconBuilder classes for customization"
20
+
17
21
  class_exclusive do
18
22
  SUPPORTED_LIBRARIES.keys.each do |library|
19
23
  class_option library, type: :boolean, lazy_default: false, desc: "Use #{library} icon library"
20
24
  end
21
25
  end
22
26
 
23
- def remove_existing_icon_helper_and_builders
24
- remove_dir 'app/icon_builders'
25
- remove_file 'app/helpers/icon_helper.rb'
26
- end
27
-
28
27
  def add_view_helper
29
28
  @chosen_library = capture_user_selection
30
29
  @supported_properties = SUPPORTED_LIBRARIES.fetch(@chosen_library)
31
30
 
32
- template 'app/icon_builders/icon_builder.rb'
33
- template "app/icon_builders/#{@chosen_library}_icon_builder.rb"
34
- template 'app/helpers/icon_helper.rb'
31
+ template 'app/helpers/icon_helper.rb', force: true
32
+ end
33
+
34
+ def install_builders
35
+ return unless options.install_builders?
36
+
37
+ source_paths << File.expand_path(BUILDER_DIR, Rolemodel::GEM_LIB)
38
+ copy_file 'icon_builder.rb', "lib/#{BUILDER_DIR}/icon_builder.rb", force: true
39
+ copy_file "#{@chosen_library}_icon_builder.rb", "lib/#{BUILDER_DIR}/#{@chosen_library}_icon_builder.rb", force: true
35
40
  end
36
41
 
37
42
  private
38
43
 
39
44
  def capture_user_selection
40
- options.except(*%i[skip_namespace skip_collision_check]).invert[true] || ask(
45
+ options.slice(*SUPPORTED_LIBRARIES.keys).invert[true] || ask(
41
46
  'What icon library would you like to add?',
42
47
  default: SUPPORTED_LIBRARIES.keys.first.to_s,
43
48
  limited_to: SUPPORTED_LIBRARIES.keys.map(&:to_s)
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rolemodel/optics'
4
+
3
5
  # Helper method that renders icons from your icon library of choice.
4
6
  #
5
7
  # Usage:
@@ -14,11 +16,11 @@
14
16
  module IconHelper
15
17
  # <%= @supported_properties %>
16
18
  def icon(name, **)
17
- <%= @chosen_library.classify %>IconBuilder.new(name, **).build
19
+ Rolemodel::Optics::<%= @chosen_library.classify %>IconBuilder.new(name, **).build
18
20
  end
19
21
 
20
22
  # <%= @supported_properties %>
21
23
  def flash_icon(type, **)
22
- <%= @chosen_library.classify %>IconBuilder.flash_icon(type, **).build
24
+ Rolemodel::Optics::<%= @chosen_library.classify %>IconBuilder.flash_icon(type, **).build
23
25
  end
24
26
  end
@@ -1,5 +1,5 @@
1
1
  module Rolemodel
2
- class ReactGenerator < BaseGenerator
2
+ class ReactGenerator < GeneratorBase
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  def add_npm_packages
@@ -1,5 +1,5 @@
1
1
  module Rolemodel
2
- class ReadmeGenerator < BaseGenerator
2
+ class ReadmeGenerator < GeneratorBase
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  def install_readme
@@ -1,6 +1,6 @@
1
1
  module Rolemodel
2
2
  module Saas
3
- class AllGenerator < BaseGenerator
3
+ class AllGenerator < GeneratorBase
4
4
  source_root File.expand_path('templates', __dir__)
5
5
 
6
6
  def run_all_the_generators
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Saas
5
- class DeviseGenerator < BaseGenerator
5
+ class DeviseGenerator < GeneratorBase
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def add_organization
@@ -1,5 +1,5 @@
1
1
  module Rolemodel
2
- class SemaphoreGenerator < BaseGenerator
2
+ class SemaphoreGenerator < GeneratorBase
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  def create_base_semaphore_config
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class SimpleFormGenerator < BaseGenerator
4
+ class SimpleFormGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def add_gem
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class SlimGenerator < BaseGenerator
4
+ class SlimGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def add_slim
@@ -1,5 +1,5 @@
1
1
  module Rolemodel
2
- class SoftDestroyableGenerator < BaseGenerator
2
+ class SoftDestroyableGenerator < GeneratorBase
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  def add_concern
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class SourceMapGenerator < BaseGenerator
4
+ class SourceMapGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def inject_config_for_production
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- class TailoredSelectGenerator < BaseGenerator
4
+ class TailoredSelectGenerator < GeneratorBase
5
5
  source_root File.expand_path('templates', __dir__)
6
6
 
7
7
  def add_tailored_select_package
@@ -5,7 +5,10 @@
5
5
  ## What you get
6
6
 
7
7
  * [RSpec](./rspec)
8
- * [JasminePlaywright](./jasmine_playwright)
9
8
  * [FactoryBot](./factory_bot)
10
9
  * [TestProf](./test_prof)
11
10
  * [ParallelTests](./parallel_tests)
11
+
12
+ Include the `--js-runner` flag (off by default) to also install the private `@rolemodel/jasmine-playwright-runner` package.
13
+
14
+ * [JasminePlaywright](./jasmine_playwright)
@@ -1,13 +1,13 @@
1
1
  module Rolemodel
2
2
  module Testing
3
- class AllGenerator < BaseGenerator
3
+ class AllGenerator < GeneratorBase
4
4
  source_root File.expand_path('templates', __dir__)
5
5
 
6
+ class_option :js_runner, type: :boolean, default: false, desc: 'Include jasmine-playwright-runner for browser testing'
7
+
6
8
  def run_all_the_generators
7
9
  generate 'rolemodel:testing:factory_bot'
8
- if yes?('Would you like to add jasmine-playwright-runner for browser testing?')
9
- generate 'rolemodel:testing:jasmine_playwright'
10
- end
10
+ generate 'rolemodel:testing:jasmine_playwright' if options.js_runner?
11
11
  generate 'rolemodel:testing:parallel_tests'
12
12
  generate 'rolemodel:testing:rspec'
13
13
  generate 'rolemodel:testing:test_prof'
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Testing
5
- class FactoryBotGenerator < BaseGenerator
5
+ class FactoryBotGenerator < GeneratorBase
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def install_factory_bot_rails
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Testing
5
- class JasminePlaywrightGenerator < BaseGenerator
5
+ class JasminePlaywrightGenerator < GeneratorBase
6
6
  include ReplaceContentHelper
7
7
  source_root File.expand_path('templates', __dir__)
8
8
  class_option :github_package_token, type: :string, default: ENV['GITHUB_PACKAGES_TOKEN'], desc: 'GitHub Packages token with access to @rolemodel packages'
@@ -15,7 +15,7 @@ module Rolemodel
15
15
  ].freeze
16
16
 
17
17
  def fail_without_github_token
18
- raise 'a --github_package_token option or GITHUB_PACKAGES_TOKEN environment variable is required' if options[:github_package_token].blank?
18
+ raise Thor::InvocationError, 'a --github_package_token option or GITHUB_PACKAGES_TOKEN environment variable is required' if options[:github_package_token].blank?
19
19
  end
20
20
 
21
21
  def yarn_init_unless_package_json_exists
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Testing
5
- class ParallelTestsGenerator < BaseGenerator # rubocop:disable Style/Documentation
5
+ class ParallelTestsGenerator < GeneratorBase # rubocop:disable Style/Documentation
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def install_parallel_tests
@@ -29,7 +29,7 @@ it 'saves the form data', :js do
29
29
  end
30
30
  ```
31
31
 
32
- #### Chrome - visible browser
32
+ #### Chrome - visible browser (For debugging only - do not commit headful system specs)
33
33
 
34
34
  ```rb
35
35
  it 'saves the form data', :chrome do
@@ -8,7 +8,7 @@ Example:
8
8
  spec/rails_helper.rb
9
9
  spec/spec_helper.rb
10
10
  spec/support/capybara_drivers.rb
11
- spec/support/capybara_testid.rb
11
+ spec/support/capybara_config.rb
12
12
  spec/support/helpers.rb
13
13
  spec/support/webpacker.rb
14
14
  .rspec
@@ -2,20 +2,27 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Testing
5
- class RspecGenerator < BaseGenerator
5
+ class RspecGenerator < GeneratorBase
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
+ class_option :marsh_grass, type: :boolean, default: false, desc: 'Include marsh_grass for debugging RSpec tests'
9
+
8
10
  def install_rspec
11
+ say 'Installing RSpec-rails', :green
12
+
9
13
  gem_group :development, :test do
10
14
  gem 'rspec-rails'
11
15
  end
12
- run_bundle
16
+
17
+ say 'Installing capybara-playwright-driver for system tests', :green
13
18
 
14
19
  gem_group :test do
15
20
  gem 'capybara-playwright-driver'
16
- gem 'marsh_grass'
17
- gem 'pry'
18
- gem 'webdrivers'
21
+
22
+ if options.marsh_grass?
23
+ gem 'marsh_grass'
24
+ gem 'pry'
25
+ end
19
26
  end
20
27
  run_bundle
21
28
  end
@@ -28,17 +35,10 @@ module Rolemodel
28
35
  end
29
36
 
30
37
  def add_spec_files
31
- template 'rails_helper.rb', 'spec/rails_helper.rb'
32
- template 'spec_helper.rb', 'spec/spec_helper.rb'
33
- template '.rspec', '.rspec'
34
- template 'support/capybara_drivers.rb', 'spec/support/capybara_drivers.rb'
35
- template 'support/capybara_testid.rb', 'spec/support/capybara_testid.rb'
36
- template 'support/helpers/action_cable_helper.rb', 'spec/support/helpers/action_cable_helper.rb'
37
- template 'support/helpers/capybara_helper.rb', 'spec/support/helpers/capybara_helper.rb'
38
- template 'support/helpers/playwright_helper.rb', 'spec/support/helpers/playwright_helper.rb'
39
- template 'support/helpers/select_helper.rb', 'spec/support/helpers/select_helper.rb'
40
- template 'support/helpers/test_element_helper.rb', 'spec/support/helpers/test_element_helper.rb'
41
- template 'support/helpers.rb', 'spec/support/helpers.rb'
38
+ say 'Adding Support Files', :green
39
+
40
+ directory 'spec'
41
+
42
42
  append_file '.gitignore', 'spec/examples.txt'
43
43
  end
44
44
  end
@@ -9,6 +9,10 @@ abort("The Rails environment is running in production mode!") if Rails.env.produ
9
9
  require 'rspec/rails'
10
10
  # Add additional requires below this line. Rails is not loaded until this point!
11
11
 
12
+ ActiveSupport::Inflector.inflections(:en) do |inflect|
13
+ inflect.acronym "MCP"
14
+ end
15
+
12
16
  # Requires supporting ruby files with custom matchers and macros, etc, in
13
17
  # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
14
18
  # run as spec files by default. This means that files in spec/support that end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ Capybara.configure do |config|
4
+ config.test_id = 'data-testid'
5
+ config.default_normalize_ws = true
6
+ config.save_path = './tmp/screenshots'
7
+ config.automatic_label_click = true
8
+ config.threadsafe = true
9
+ end
@@ -47,5 +47,3 @@ Capybara.server = :puma, { Silent: true }
47
47
 
48
48
  # try to remove any potential for parallel tests to conflict
49
49
  Capybara.threadsafe = true
50
-
51
- Webdrivers.cache_time = 24.hours.to_i
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Testing
5
- class TestProfGenerator < BaseGenerator
5
+ class TestProfGenerator < GeneratorBase
6
6
  def install_test_prof
7
7
  gem_group :test do
8
8
  gem 'test-prof'
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module Testing
5
- class VitestGenerator < BaseGenerator
5
+ class VitestGenerator < GeneratorBase
6
6
  include ReplaceContentHelper
7
7
  source_root File.expand_path('templates', __dir__)
8
8
 
@@ -1,6 +1,6 @@
1
1
  module Rolemodel
2
2
  module UiComponents
3
- class AllGenerator < BaseGenerator
3
+ class AllGenerator < GeneratorBase
4
4
  source_root File.expand_path('templates', __dir__)
5
5
 
6
6
  def run_all_the_generators
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module UiComponents
5
- class FlashGenerator < BaseGenerator
5
+ class FlashGenerator < GeneratorBase
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def generate_files
@@ -1,6 +1,6 @@
1
1
  module Rolemodel
2
2
  module UiComponents
3
- class ModalsGenerator < BaseGenerator
3
+ class ModalsGenerator < GeneratorBase
4
4
  source_root File.expand_path('templates', __dir__)
5
5
  class_option :panels, type: :boolean, default: false, desc: 'Include RoleModel Panel Setup'
6
6
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Rolemodel
4
4
  module UiComponents
5
- class NavbarGenerator < BaseGenerator
5
+ class NavbarGenerator < GeneratorBase
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def copy_navbar_files
@@ -1,5 +1,5 @@
1
1
  module Rolemodel
2
- class WebpackGenerator < BaseGenerator
2
+ class WebpackGenerator < GeneratorBase
3
3
  source_root File.expand_path('templates', __dir__)
4
4
 
5
5
  DEV_DEPS = %w[
@@ -2,8 +2,10 @@
2
2
 
3
3
  module Rolemodel
4
4
  class Engine < ::Rails::Engine
5
+ require_relative 'generator_base'
6
+
5
7
  generators do
6
- require 'generators/rolemodel/base_generator'
8
+ require 'generators/rolemodel/all_generator'
7
9
  end
8
10
  end
9
11
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+ require 'rails/generators/bundle_helper'
5
+ require_relative 'replace_content_helper'
6
+
7
+ module Rolemodel
8
+ class GeneratorBase < ::Rails::Generators::Base
9
+ include ::Rails::Generators::BundleHelper, ReplaceContentHelper
10
+
11
+ private
12
+ # based on https://github.com/rails/rails/blob/main/railties/lib/rails/generators/app_base.rb#L713
13
+ def run_bundle
14
+ bundle_command("install --quiet", "BUNDLE_IGNORE_MESSAGES" => "1")
15
+ end
16
+ end
17
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # CustomIconBuilder is an IconBuilder that allows for custom SVG icons to be used in the application.
4
- class CustomIconBuilder < IconBuilder
4
+ class Rolemodel::Optics::CustomIconBuilder < Rolemodel::Optics::IconBuilder
5
5
  def self.flash_icons
6
6
  {
7
7
  notice: 'circle-check',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # FeatherIconBuilder is an IconBuilder that allows for Feather icons to be used in the application.
4
4
  # https://feathericons.com/
5
- class FeatherIconBuilder < IconBuilder
5
+ class Rolemodel::Optics::FeatherIconBuilder < Rolemodel::Optics::IconBuilder
6
6
  def self.flash_icons
7
7
  {
8
8
  notice: 'check-circle',
@@ -1,14 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class IconBuilder
3
+ class Rolemodel::Optics::IconBuilder
4
4
  include ActionView::Helpers::TagHelper
5
5
 
6
6
  attr_reader :name, :filled, :size, :weight, :emphasis, :duotone, :additional_classes, :color, :hover_text
7
+ alias title hover_text
7
8
 
8
9
  DEFAULT_SIZE = 'medium'
9
10
  DEFAULT_WEIGHT = 'normal'
10
11
  DEFAULT_EMPHASIS = 'normal'
11
12
 
13
+ # TODO: consider Data.define a custom options object if all of these parameters are indeed necessary.
12
14
  def initialize( # rubocop:disable Metrics/ParameterLists
13
15
  name,
14
16
  filled: false,
@@ -42,32 +44,21 @@ class IconBuilder
42
44
  def build
43
45
  options = {
44
46
  class: tag_classes.compact_blank.join(' '),
45
- title: hover_text
46
- }
47
-
48
- if color.present?
47
+ title: hover_text,
49
48
  # color: primary, neutral, alerts-notice, alerts-warning, alerts-danger, alerts-info
50
- options[:style] = "#{color_attribute}: var(--op-color-#{color}-base);"
51
- end
49
+ style: ("#{color_attribute}: var(--op-color-#{color}-base);" if color.present?)
50
+ }.compact_blank
52
51
 
53
- tag.send(tag_method, tag_contents, **options)
52
+ tag.public_send(tag_method, tag_contents, **options)
54
53
  end
55
54
 
56
55
  private
57
56
 
58
- def tag_method
59
- raise NotImplementedError
60
- end
61
-
62
- def tag_contents
63
- ''
64
- end
65
-
66
57
  def tag_classes
67
58
  ['icon', size == DEFAULT_SIZE ? '' : "icon--#{size}", additional_classes]
68
59
  end
69
60
 
70
- def color_attribute
71
- 'color'
72
- end
61
+ def color_attribute = 'color'
62
+ def tag_contents = ''
63
+ def tag_method = :i
73
64
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  # LucideIconBuilder is an IconBuilder that allows for Lucide icons to be used in the application.
4
4
  # https://lucide.dev/icons/
5
- class LucideIconBuilder < IconBuilder
5
+ class Rolemodel::Optics::LucideIconBuilder < Rolemodel::Optics::IconBuilder
6
6
  def self.flash_icons
7
7
  {
8
8
  notice: 'circle-check',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # MaterialIconBuilder is an IconBuilder that allows for Material icons to be used in the application.
4
4
  # https://fonts.google.com/icons
5
- class MaterialIconBuilder < IconBuilder
5
+ class Rolemodel::Optics::MaterialIconBuilder < Rolemodel::Optics::IconBuilder
6
6
  def self.flash_icons
7
7
  {
8
8
  notice: 'check_circle',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # PhosphorIconBuilder is an IconBuilder that allows for Phosphor icons to be used in the application.
4
4
  # https://phosphoricons.com/
5
- class PhosphorIconBuilder < IconBuilder
5
+ class Rolemodel::Optics::PhosphorIconBuilder < Rolemodel::Optics::IconBuilder
6
6
  def self.flash_icons
7
7
  {
8
8
  notice: 'check-circle',
@@ -2,7 +2,7 @@
2
2
 
3
3
  # TablerIconBuilder is an IconBuilder that allows for Tabler icons to be used in the application.
4
4
  # https://tablericons.com/
5
- class TablerIconBuilder < IconBuilder
5
+ class Rolemodel::Optics::TablerIconBuilder < Rolemodel::Optics::IconBuilder
6
6
  def self.flash_icons
7
7
  {
8
8
  notice: 'circle-check',
@@ -0,0 +1,9 @@
1
+ module Rolemodel::Optics
2
+ autoload :IconBuilder, 'rolemodel/optics/icon_builder'
3
+ autoload :CustomIconBuilder, 'rolemodel/optics/custom_icon_builder'
4
+ autoload :FeatherIconBuilder, 'rolemodel/optics/feather_icon_builder'
5
+ autoload :LucideIconBuilder, 'rolemodel/optics/lucide_icon_builder'
6
+ autoload :MaterialIconBuilder, 'rolemodel/optics/material_icon_builder'
7
+ autoload :PhosphorIconBuilder, 'rolemodel/optics/phosphor_icon_builder'
8
+ autoload :TablerIconBuilder, 'rolemodel/optics/tabler_icon_builder'
9
+ end
@@ -0,0 +1,42 @@
1
+ require 'benchmark'
2
+
3
+ module Rolemodel
4
+ module Utility
5
+ module TaskTools
6
+ PROGRESS = %w[⠏ ⠇ ⠧ ⠦ ⠴ ⠼ ⠸ ⠹ ⠙ ⠋].cycle
7
+
8
+ # based on the migration helper of the same name
9
+ def say_with_time(message, &)
10
+ say message
11
+ time = Benchmark.measure(&)
12
+ say '%.4fs' % time.real, subitem: true
13
+ end
14
+
15
+ def say(message, subitem: false)
16
+ puts "#{subitem ? ' ->' : '--'} #{message}" # rubocop:disable Rails/Output
17
+ end
18
+
19
+ ##
20
+ # Indicate the progress of a long-running process
21
+ #
22
+ # Usage (with a known total):
23
+ # 100.times do |i|
24
+ # indicate_progress(i, 100)
25
+ # end
26
+ #
27
+ # Only update every 'report_interval' iteration for eye-trackable animation speed
28
+ # Also displays a completion percentage if a total is provided
29
+ def indicate_progress(index, total = nil, report_interval: 9)
30
+ return unless (index % report_interval).zero?
31
+
32
+ print("#{PROGRESS.next} #{to_percent(index, total) if total}\r") # rubocop:disable Rails/Output
33
+ end
34
+
35
+ private
36
+
37
+ def to_percent(index, total)
38
+ '%3.f%%' % (index / total.to_f * 100.0)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ module Rolemodel::Utility
2
+ autoload :TaskTools, 'rolemodel/utility/task_tools'
3
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rolemodel
4
- VERSION = '1.0.0'
4
+ VERSION = '2.0.1'
5
5
  end
@@ -3,6 +3,8 @@
3
3
  module Rolemodel
4
4
  NODE_VERSION = '24.12.0'
5
5
  RUBY_VERSION = '4.0.1'
6
+
7
+ GEM_LIB = File.expand_path(__dir__)
6
8
  end
7
9
 
8
10
  require 'rolemodel/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rolemodel-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - RoleModel Software Inc
@@ -23,6 +23,20 @@ dependencies:
23
23
  - - ">"
24
24
  - !ruby/object:Gem::Version
25
25
  version: '7.1'
26
+ - !ruby/object:Gem::Dependency
27
+ name: benchmark
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
26
40
  - !ruby/object:Gem::Dependency
27
41
  name: bundler
28
42
  requirement: !ruby/object:Gem::Requirement
@@ -149,7 +163,6 @@ files:
149
163
  - lib/generators/rolemodel/README.md
150
164
  - lib/generators/rolemodel/USAGE
151
165
  - lib/generators/rolemodel/all_generator.rb
152
- - lib/generators/rolemodel/base_generator.rb
153
166
  - lib/generators/rolemodel/editors/README.md
154
167
  - lib/generators/rolemodel/editors/USAGE
155
168
  - lib/generators/rolemodel/editors/editors_generator.rb
@@ -219,13 +232,6 @@ files:
219
232
  - lib/generators/rolemodel/optics/icons/USAGE
220
233
  - lib/generators/rolemodel/optics/icons/icons_generator.rb
221
234
  - lib/generators/rolemodel/optics/icons/templates/app/helpers/icon_helper.rb.tt
222
- - lib/generators/rolemodel/optics/icons/templates/app/icon_builders/custom_icon_builder.rb
223
- - lib/generators/rolemodel/optics/icons/templates/app/icon_builders/feather_icon_builder.rb
224
- - lib/generators/rolemodel/optics/icons/templates/app/icon_builders/icon_builder.rb
225
- - lib/generators/rolemodel/optics/icons/templates/app/icon_builders/lucide_icon_builder.rb
226
- - lib/generators/rolemodel/optics/icons/templates/app/icon_builders/material_icon_builder.rb
227
- - lib/generators/rolemodel/optics/icons/templates/app/icon_builders/phosphor_icon_builder.rb
228
- - lib/generators/rolemodel/optics/icons/templates/app/icon_builders/tabler_icon_builder.rb
229
235
  - lib/generators/rolemodel/react/README.md
230
236
  - lib/generators/rolemodel/react/USAGE
231
237
  - lib/generators/rolemodel/react/react_generator.rb
@@ -236,7 +242,6 @@ files:
236
242
  - lib/generators/rolemodel/readme/USAGE
237
243
  - lib/generators/rolemodel/readme/readme_generator.rb
238
244
  - lib/generators/rolemodel/readme/templates/README.md.erb
239
- - lib/generators/rolemodel/replace_content_helper.rb
240
245
  - lib/generators/rolemodel/saas/README.md
241
246
  - lib/generators/rolemodel/saas/USAGE
242
247
  - lib/generators/rolemodel/saas/all_generator.rb
@@ -338,16 +343,16 @@ files:
338
343
  - lib/generators/rolemodel/testing/rspec/README.md
339
344
  - lib/generators/rolemodel/testing/rspec/USAGE
340
345
  - lib/generators/rolemodel/testing/rspec/rspec_generator.rb
341
- - lib/generators/rolemodel/testing/rspec/templates/rails_helper.rb
342
- - lib/generators/rolemodel/testing/rspec/templates/spec_helper.rb
343
- - lib/generators/rolemodel/testing/rspec/templates/support/capybara_drivers.rb
344
- - lib/generators/rolemodel/testing/rspec/templates/support/capybara_testid.rb
345
- - lib/generators/rolemodel/testing/rspec/templates/support/helpers.rb
346
- - lib/generators/rolemodel/testing/rspec/templates/support/helpers/action_cable_helper.rb
347
- - lib/generators/rolemodel/testing/rspec/templates/support/helpers/capybara_helper.rb
348
- - lib/generators/rolemodel/testing/rspec/templates/support/helpers/playwright_helper.rb
349
- - lib/generators/rolemodel/testing/rspec/templates/support/helpers/select_helper.rb
350
- - lib/generators/rolemodel/testing/rspec/templates/support/helpers/test_element_helper.rb
346
+ - lib/generators/rolemodel/testing/rspec/templates/spec/rails_helper.rb.tt
347
+ - lib/generators/rolemodel/testing/rspec/templates/spec/spec_helper.rb.tt
348
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/capybara_config.rb.tt
349
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/capybara_drivers.rb.tt
350
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers.rb.tt
351
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers/action_cable_helper.rb
352
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers/capybara_helper.rb
353
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers/playwright_helper.rb
354
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers/select_helper.rb
355
+ - lib/generators/rolemodel/testing/rspec/templates/spec/support/helpers/test_element_helper.rb
351
356
  - lib/generators/rolemodel/testing/test_prof/README.md
352
357
  - lib/generators/rolemodel/testing/test_prof/USAGE
353
358
  - lib/generators/rolemodel/testing/test_prof/test_prof_generator.rb
@@ -390,12 +395,20 @@ files:
390
395
  - lib/generators/rolemodel/webpack/templates/postcss.config.cjs
391
396
  - lib/generators/rolemodel/webpack/templates/webpack.config.js
392
397
  - lib/generators/rolemodel/webpack/webpack_generator.rb
393
- - lib/generators/templates/generator/%filename%.rb.tt
394
- - lib/generators/templates/generator/README.md.tt
395
- - lib/generators/templates/generator/USAGE.tt
396
- - lib/generators/templates/generator_spec/%filename%_spec.rb.tt
397
398
  - lib/rolemodel-rails.rb
398
399
  - lib/rolemodel/engine.rb
400
+ - lib/rolemodel/generator_base.rb
401
+ - lib/rolemodel/optics.rb
402
+ - lib/rolemodel/optics/custom_icon_builder.rb
403
+ - lib/rolemodel/optics/feather_icon_builder.rb
404
+ - lib/rolemodel/optics/icon_builder.rb
405
+ - lib/rolemodel/optics/lucide_icon_builder.rb
406
+ - lib/rolemodel/optics/material_icon_builder.rb
407
+ - lib/rolemodel/optics/phosphor_icon_builder.rb
408
+ - lib/rolemodel/optics/tabler_icon_builder.rb
409
+ - lib/rolemodel/replace_content_helper.rb
410
+ - lib/rolemodel/utility.rb
411
+ - lib/rolemodel/utility/task_tools.rb
399
412
  - lib/rolemodel/version.rb
400
413
  homepage: https://github.com/RoleModel/rolemodel_rails
401
414
  licenses:
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails/generators/base'
4
- require 'rails/generators/bundle_helper'
5
- require_relative 'replace_content_helper'
6
-
7
- class Rolemodel::BaseGenerator < Rails::Generators::Base
8
- include Rails::Generators::BundleHelper,
9
- Rolemodel::ReplaceContentHelper
10
-
11
- private
12
- # based on https://github.com/rails/rails/blob/main/railties/lib/rails/generators/app_base.rb#L713
13
- def run_bundle
14
- bundle_command("install --quiet", "BUNDLE_IGNORE_MESSAGES" => "1")
15
- end
16
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Capybara.configure do |config|
4
- config.test_id = 'data-testid'
5
- end
@@ -1,11 +0,0 @@
1
- module Rolemodel
2
- <%= "module #{module_name}" if module_name %>
3
- class <%= class_name %> < BaseGenerator
4
- source_root File.expand_path('templates', __dir__)
5
-
6
- def generate_stuff
7
- say 'generating stuff', :green
8
- end
9
- end
10
- <%= 'end' if module_name %>
11
- end
@@ -1,11 +0,0 @@
1
- # <%= class_name.titleize %>
2
-
3
- <%= description %>
4
-
5
- ## Prerequisites
6
-
7
- - ...
8
-
9
- ## What you get
10
-
11
- - ...
@@ -1,5 +0,0 @@
1
- Description:
2
- <%= description %>
3
-
4
- Example:
5
- rails generate <%= command_name %>
@@ -1,5 +0,0 @@
1
- RSpec.describe Rolemodel::<%= name.camelize %>Generator, type: :generator do
2
- before { run_generator_against_test_app }
3
-
4
- pending "add some examples to #{__FILE__}"
5
- end