diff --git a/Gemfile.lock b/Gemfile.lock index 559e322a..e4f6dada 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - rolemodel_rails (0.24.5) + rolemodel_rails (0.25.0) rails (> 7.1) GEM diff --git a/example_rails7/Gemfile.lock b/example_rails7/Gemfile.lock index 5b51249f..afe0a114 100644 --- a/example_rails7/Gemfile.lock +++ b/example_rails7/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - rolemodel_rails (0.24.5) + rolemodel_rails (0.25.0) rails (> 7.1) GEM diff --git a/example_rails8/Gemfile.lock b/example_rails8/Gemfile.lock index 54023cf2..b24564f7 100644 --- a/example_rails8/Gemfile.lock +++ b/example_rails8/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - rolemodel_rails (0.24.5) + rolemodel_rails (0.25.0) rails (> 7.1) GEM @@ -521,7 +521,7 @@ CHECKSUMS regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 - rolemodel_rails (0.24.5) + rolemodel_rails (0.25.0) rubocop (1.84.1) sha256=14cc626f355141f5a2ef53c10a68d66b13bb30639b26370a76559096cc6bcc1a rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834 diff --git a/lib/generators/bundler_helpers.rb b/lib/generators/bundler_helpers.rb deleted file mode 100644 index 3835eef2..00000000 --- a/lib/generators/bundler_helpers.rb +++ /dev/null @@ -1,35 +0,0 @@ -module BundlerHelpers - private - - # taken from https://github.com/rails/rails/blob/2fe20cb55c76e6e50ec3a4ec5b03bbb65adba290/railties/lib/rails/generators/app_base.rb#L406 - def run_bundle - bundle_command("install", "BUNDLE_IGNORE_MESSAGES" => "1") - end - - # taken from https://github.com/rails/rails/blob/2fe20cb55c76e6e50ec3a4ec5b03bbb65adba290/railties/lib/rails/generators/app_base.rb#L352 - def bundle_command(command, env = {}) - say_status :run, "bundle #{command}" - - # We are going to shell out rather than invoking Bundler::CLI.new(command) - # because `rails new` loads the Thor gem and on the other hand bundler uses - # its own vendored Thor, which could be a different version. Running both - # things in the same process is a recipe for a night with paracetamol. - # - # Thanks to James Tucker for the Gem tricks involved in this call. - _bundle_command = Gem.bin_path("bundler", "bundle") - - require "bundler" - Bundler.with_original_env do - exec_bundle_command(_bundle_command, command, env) - end - end - - def exec_bundle_command(bundle_command, command, env) - full_command = %Q["#{Gem.ruby}" "#{bundle_command}" #{command}] - if options[:quiet] - system(env, full_command, out: File::NULL) - else - system(env, full_command) - end - end -end diff --git a/lib/generators/replace_content_helper.rb b/lib/generators/replace_content_helper.rb deleted file mode 100644 index 2fd3cc68..00000000 --- a/lib/generators/replace_content_helper.rb +++ /dev/null @@ -1,27 +0,0 @@ -module ReplaceContentHelper - private - - def replace_content(relative_path, &block) - source = File.expand_path(relative_path.to_s, destination_root) - content = File.exist?(source) ? File.open(source) { it.binmode.read } : '' - - remove_file relative_path - create_file relative_path, yield(content) - end - - def modify_json_file(relative_path, &block) - replace_content(relative_path) do |content| - hash = JSON.parse(content.presence || '{}') - yield(hash) - JSON.pretty_generate(hash) + "\n" - end - end - - def add_package_json_script(command_name, command) - modify_json_file('package.json') do |hash| - hash['scripts'] ||= {} - hash['scripts'][command_name] = command - hash - end - end -end diff --git a/lib/generators/rolemodel.rb b/lib/generators/rolemodel.rb index d0a6bac5..42e077d2 100644 --- a/lib/generators/rolemodel.rb +++ b/lib/generators/rolemodel.rb @@ -1,9 +1,24 @@ +require 'rails' require 'pathname' +require 'rails/generators/bundle_helper' +require_relative 'rolemodel/replace_content_helper' module Rolemodel RUBY_VERSION = Pathname.pwd.join('.ruby-version').read.strip NODE_VERSION = Pathname.pwd.join('.node-version').read.strip - autoload :BundlerHelpers, File.expand_path('./bundler_helpers', __dir__) - autoload :ReplaceContentHelper, File.expand_path('./replace_content_helper', __dir__) + class BaseGenerator < Rails::Generators::Base + include Rails::Generators::BundleHelper + include ReplaceContentHelper + + private + # based on https://github.com/rails/rails/blob/main/railties/lib/rails/generators/app_base.rb#L713 + def run_bundle + bundle_command("install --quiet", "BUNDLE_IGNORE_MESSAGES" => "1") + end + end + + Dir['lib/generators/rolemodel/**/*.rb'].each do |file| + load file if file.end_with?('_generator.rb') + end end diff --git a/lib/generators/rolemodel/all_generator.rb b/lib/generators/rolemodel/all_generator.rb index eb94b892..00a5864d 100644 --- a/lib/generators/rolemodel/all_generator.rb +++ b/lib/generators/rolemodel/all_generator.rb @@ -1,5 +1,5 @@ module Rolemodel - class AllGenerator < Rails::Generators::Base + class AllGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def run_all_the_generators diff --git a/lib/generators/rolemodel/editors/editors_generator.rb b/lib/generators/rolemodel/editors/editors_generator.rb index 009ae505..55c01866 100644 --- a/lib/generators/rolemodel/editors/editors_generator.rb +++ b/lib/generators/rolemodel/editors/editors_generator.rb @@ -4,7 +4,7 @@ module Rolemodel # Add standard editorconfig and any extensions to enable it - class EditorsGenerator < Rails::Generators::Base + class EditorsGenerator < BaseGenerator include Rolemodel::VSCodeHelpers # This is bringing in the root from this gem, so we only modify diff --git a/lib/generators/rolemodel/github/github_generator.rb b/lib/generators/rolemodel/github/github_generator.rb index 373a66e8..04184343 100644 --- a/lib/generators/rolemodel/github/github_generator.rb +++ b/lib/generators/rolemodel/github/github_generator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module Rolemodel - class GithubGenerator < Rails::Generators::Base + class GithubGenerator < BaseGenerator # Source root is the project-level .github directory # This allows us to use the same templates for both the generated app and this gem source_root File.expand_path('.github') diff --git a/lib/generators/rolemodel/good_job/good_job_generator.rb b/lib/generators/rolemodel/good_job/good_job_generator.rb index 3c10076a..e95a87b0 100644 --- a/lib/generators/rolemodel/good_job/good_job_generator.rb +++ b/lib/generators/rolemodel/good_job/good_job_generator.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true module Rolemodel - class GoodJobGenerator < Rails::Generators::Base - include BundlerHelpers + class GoodJobGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_good_job diff --git a/lib/generators/rolemodel/heroku/heroku_generator.rb b/lib/generators/rolemodel/heroku/heroku_generator.rb index 009bc3f2..c74e9680 100644 --- a/lib/generators/rolemodel/heroku/heroku_generator.rb +++ b/lib/generators/rolemodel/heroku/heroku_generator.rb @@ -1,5 +1,5 @@ module Rolemodel - class HerokuGenerator < Rails::Generators::Base + class HerokuGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_app_json diff --git a/lib/generators/rolemodel/kaminari/kaminari_generator.rb b/lib/generators/rolemodel/kaminari/kaminari_generator.rb index 66144530..4fa40306 100644 --- a/lib/generators/rolemodel/kaminari/kaminari_generator.rb +++ b/lib/generators/rolemodel/kaminari/kaminari_generator.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true module Rolemodel - class KaminariGenerator < Rails::Generators::Base - include BundlerHelpers + class KaminariGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_kaminari diff --git a/lib/generators/rolemodel/linters/all_generator.rb b/lib/generators/rolemodel/linters/all_generator.rb index 59580acc..72a39d0b 100644 --- a/lib/generators/rolemodel/linters/all_generator.rb +++ b/lib/generators/rolemodel/linters/all_generator.rb @@ -1,6 +1,6 @@ module Rolemodel module Linters - class AllGenerator < Rails::Generators::Base + class AllGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def run_all_the_generators diff --git a/lib/generators/rolemodel/linters/eslint/eslint_generator.rb b/lib/generators/rolemodel/linters/eslint/eslint_generator.rb index 0ae81456..c58f484f 100644 --- a/lib/generators/rolemodel/linters/eslint/eslint_generator.rb +++ b/lib/generators/rolemodel/linters/eslint/eslint_generator.rb @@ -2,7 +2,7 @@ module Rolemodel module Linters - class EslintGenerator < Rails::Generators::Base + class EslintGenerator < BaseGenerator include ReplaceContentHelper source_root File.expand_path('templates', __dir__) diff --git a/lib/generators/rolemodel/linters/rubocop/rubocop_generator.rb b/lib/generators/rolemodel/linters/rubocop/rubocop_generator.rb index 61c94692..1041632a 100644 --- a/lib/generators/rolemodel/linters/rubocop/rubocop_generator.rb +++ b/lib/generators/rolemodel/linters/rubocop/rubocop_generator.rb @@ -3,8 +3,7 @@ module Rolemodel module Linters # Install the standard rubocop and a custom cop - class RubocopGenerator < Rails::Generators::Base - include BundlerHelpers + class RubocopGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_rubocop diff --git a/lib/generators/rolemodel/lograge/lograge_generator.rb b/lib/generators/rolemodel/lograge/lograge_generator.rb index d2872122..2dbc1a2f 100644 --- a/lib/generators/rolemodel/lograge/lograge_generator.rb +++ b/lib/generators/rolemodel/lograge/lograge_generator.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true module Rolemodel - class LogrageGenerator < Rails::Generators::Base - include BundlerHelpers + class LogrageGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_lograge diff --git a/lib/generators/rolemodel/mailers/mailers_generator.rb b/lib/generators/rolemodel/mailers/mailers_generator.rb index 6c4e35dc..49b2f2d0 100644 --- a/lib/generators/rolemodel/mailers/mailers_generator.rb +++ b/lib/generators/rolemodel/mailers/mailers_generator.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true module Rolemodel - class MailersGenerator < Rails::Generators::Base - include BundlerHelpers + class MailersGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_premailer_rails diff --git a/lib/generators/rolemodel/optics/all_generator.rb b/lib/generators/rolemodel/optics/all_generator.rb index 935dd2bb..cbc538d4 100644 --- a/lib/generators/rolemodel/optics/all_generator.rb +++ b/lib/generators/rolemodel/optics/all_generator.rb @@ -1,6 +1,6 @@ module Rolemodel module Optics - class AllGenerator < Rails::Generators::Base + class AllGenerator < Rolemodel::BaseGenerator source_root File.expand_path('templates', __dir__) def run_all_the_generators diff --git a/lib/generators/rolemodel/optics/base/base_generator.rb b/lib/generators/rolemodel/optics/base/base_generator.rb index ab4dcc2c..cfcb86da 100644 --- a/lib/generators/rolemodel/optics/base/base_generator.rb +++ b/lib/generators/rolemodel/optics/base/base_generator.rb @@ -1,6 +1,6 @@ module Rolemodel module Optics - class BaseGenerator < Rails::Generators::Base + class BaseGenerator < Rolemodel::BaseGenerator source_root File.expand_path('templates', __dir__) def add_optics_package diff --git a/lib/generators/rolemodel/optics/icons/icons_generator.rb b/lib/generators/rolemodel/optics/icons/icons_generator.rb index a9821338..4a3ccbfe 100644 --- a/lib/generators/rolemodel/optics/icons/icons_generator.rb +++ b/lib/generators/rolemodel/optics/icons/icons_generator.rb @@ -3,7 +3,7 @@ module Rolemodel module Optics # Generates the icon helper and icon builders for the chosen icon library - class IconsGenerator < Rails::Generators::Base + class IconsGenerator < Rolemodel::BaseGenerator source_root File.expand_path('templates', __dir__) SUPPORTED_LIBRARIES = { diff --git a/lib/generators/rolemodel/react/react_generator.rb b/lib/generators/rolemodel/react/react_generator.rb index 7c9316a5..f0f1a44d 100644 --- a/lib/generators/rolemodel/react/react_generator.rb +++ b/lib/generators/rolemodel/react/react_generator.rb @@ -1,5 +1,5 @@ module Rolemodel - class ReactGenerator < Rails::Generators::Base + class ReactGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def add_npm_packages diff --git a/lib/generators/rolemodel/readme/readme_generator.rb b/lib/generators/rolemodel/readme/readme_generator.rb index 7f3ab29d..5f17c66b 100644 --- a/lib/generators/rolemodel/readme/readme_generator.rb +++ b/lib/generators/rolemodel/readme/readme_generator.rb @@ -1,5 +1,5 @@ module Rolemodel - class ReadmeGenerator < Rails::Generators::Base + class ReadmeGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_readme diff --git a/lib/generators/rolemodel/replace_content_helper.rb b/lib/generators/rolemodel/replace_content_helper.rb new file mode 100644 index 00000000..82577311 --- /dev/null +++ b/lib/generators/rolemodel/replace_content_helper.rb @@ -0,0 +1,29 @@ +module Rolemodel + module ReplaceContentHelper + private + + def replace_content(relative_path, &block) + source = File.expand_path(relative_path.to_s, destination_root) + content = File.exist?(source) ? File.open(source) { it.binmode.read } : '' + + remove_file relative_path + create_file relative_path, yield(content) + end + + def modify_json_file(relative_path, &block) + replace_content(relative_path) do |content| + hash = JSON.parse(content.presence || '{}') + yield(hash) + JSON.pretty_generate(hash) + "\n" + end + end + + def add_package_json_script(command_name, command) + modify_json_file('package.json') do |hash| + hash['scripts'] ||= {} + hash['scripts'][command_name] = command + hash + end + end + end +end diff --git a/lib/generators/rolemodel/saas/all_generator.rb b/lib/generators/rolemodel/saas/all_generator.rb index ad504234..18b4f742 100644 --- a/lib/generators/rolemodel/saas/all_generator.rb +++ b/lib/generators/rolemodel/saas/all_generator.rb @@ -1,6 +1,6 @@ module Rolemodel module Saas - class AllGenerator < Rails::Generators::Base + class AllGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def run_all_the_generators diff --git a/lib/generators/rolemodel/saas/devise/devise_generator.rb b/lib/generators/rolemodel/saas/devise/devise_generator.rb index fcd1828b..f540ad9e 100644 --- a/lib/generators/rolemodel/saas/devise/devise_generator.rb +++ b/lib/generators/rolemodel/saas/devise/devise_generator.rb @@ -2,8 +2,7 @@ module Rolemodel module Saas - class DeviseGenerator < Rails::Generators::Base - include BundlerHelpers + class DeviseGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def add_organization diff --git a/lib/generators/rolemodel/semaphore/semaphore_generator.rb b/lib/generators/rolemodel/semaphore/semaphore_generator.rb index affcbc76..acbf27a3 100644 --- a/lib/generators/rolemodel/semaphore/semaphore_generator.rb +++ b/lib/generators/rolemodel/semaphore/semaphore_generator.rb @@ -1,5 +1,5 @@ module Rolemodel - class SemaphoreGenerator < Rails::Generators::Base + class SemaphoreGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def create_base_semaphore_config diff --git a/lib/generators/rolemodel/simple_form/simple_form_generator.rb b/lib/generators/rolemodel/simple_form/simple_form_generator.rb index 8270c3ea..4657b730 100644 --- a/lib/generators/rolemodel/simple_form/simple_form_generator.rb +++ b/lib/generators/rolemodel/simple_form/simple_form_generator.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true module Rolemodel - class SimpleFormGenerator < Rails::Generators::Base - include BundlerHelpers + class SimpleFormGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def add_gem diff --git a/lib/generators/rolemodel/slim/slim_generator.rb b/lib/generators/rolemodel/slim/slim_generator.rb index a621075c..7aaa2e67 100644 --- a/lib/generators/rolemodel/slim/slim_generator.rb +++ b/lib/generators/rolemodel/slim/slim_generator.rb @@ -1,8 +1,7 @@ # frozen_string_literal: true module Rolemodel - class SlimGenerator < Rails::Generators::Base - include BundlerHelpers + class SlimGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def add_slim diff --git a/lib/generators/rolemodel/soft_destroyable/soft_destroyable_generator.rb b/lib/generators/rolemodel/soft_destroyable/soft_destroyable_generator.rb index 22b03836..bd1bf66d 100644 --- a/lib/generators/rolemodel/soft_destroyable/soft_destroyable_generator.rb +++ b/lib/generators/rolemodel/soft_destroyable/soft_destroyable_generator.rb @@ -1,5 +1,5 @@ module Rolemodel - class SoftDestroyableGenerator < Rails::Generators::Base + class SoftDestroyableGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def add_concern diff --git a/lib/generators/rolemodel/source_map/source_map_generator.rb b/lib/generators/rolemodel/source_map/source_map_generator.rb index c3d11887..d009a772 100644 --- a/lib/generators/rolemodel/source_map/source_map_generator.rb +++ b/lib/generators/rolemodel/source_map/source_map_generator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module Rolemodel - class SourceMapGenerator < Rails::Generators::Base + class SourceMapGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def inject_config_for_production diff --git a/lib/generators/rolemodel/tailored_select/tailored_select_generator.rb b/lib/generators/rolemodel/tailored_select/tailored_select_generator.rb index 019dad8a..9b926100 100644 --- a/lib/generators/rolemodel/tailored_select/tailored_select_generator.rb +++ b/lib/generators/rolemodel/tailored_select/tailored_select_generator.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module Rolemodel - class TailoredSelectGenerator < Rails::Generators::Base + class TailoredSelectGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def add_tailored_select_package diff --git a/lib/generators/rolemodel/testing/all_generator.rb b/lib/generators/rolemodel/testing/all_generator.rb index 3c0f0eb7..b6f3d212 100644 --- a/lib/generators/rolemodel/testing/all_generator.rb +++ b/lib/generators/rolemodel/testing/all_generator.rb @@ -1,6 +1,6 @@ module Rolemodel module Testing - class AllGenerator < Rails::Generators::Base + class AllGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def run_all_the_generators diff --git a/lib/generators/rolemodel/testing/factory_bot/factory_bot_generator.rb b/lib/generators/rolemodel/testing/factory_bot/factory_bot_generator.rb index 9ed6f0e1..29135196 100644 --- a/lib/generators/rolemodel/testing/factory_bot/factory_bot_generator.rb +++ b/lib/generators/rolemodel/testing/factory_bot/factory_bot_generator.rb @@ -2,8 +2,7 @@ module Rolemodel module Testing - class FactoryBotGenerator < Rails::Generators::Base - include BundlerHelpers + class FactoryBotGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_factory_bot_rails diff --git a/lib/generators/rolemodel/testing/jasmine_playwright/jasmine_playwright_generator.rb b/lib/generators/rolemodel/testing/jasmine_playwright/jasmine_playwright_generator.rb index 9ff7de92..4957326d 100644 --- a/lib/generators/rolemodel/testing/jasmine_playwright/jasmine_playwright_generator.rb +++ b/lib/generators/rolemodel/testing/jasmine_playwright/jasmine_playwright_generator.rb @@ -2,7 +2,7 @@ module Rolemodel module Testing - class JasminePlaywrightGenerator < Rails::Generators::Base + class JasminePlaywrightGenerator < BaseGenerator include ReplaceContentHelper source_root File.expand_path('templates', __dir__) class_option :github_package_token, type: :string, default: ENV['GITHUB_PACKAGES_TOKEN'], desc: 'GitHub Packages token with access to @rolemodel packages' diff --git a/lib/generators/rolemodel/testing/parallel_tests/parallel_tests_generator.rb b/lib/generators/rolemodel/testing/parallel_tests/parallel_tests_generator.rb index 8bed56a7..064584ad 100644 --- a/lib/generators/rolemodel/testing/parallel_tests/parallel_tests_generator.rb +++ b/lib/generators/rolemodel/testing/parallel_tests/parallel_tests_generator.rb @@ -2,8 +2,7 @@ module Rolemodel module Testing - class ParallelTestsGenerator < Rails::Generators::Base # rubocop:disable Style/Documentation - include BundlerHelpers + class ParallelTestsGenerator < BaseGenerator # rubocop:disable Style/Documentation source_root File.expand_path('templates', __dir__) def install_parallel_tests diff --git a/lib/generators/rolemodel/testing/rspec/rspec_generator.rb b/lib/generators/rolemodel/testing/rspec/rspec_generator.rb index 0ff1882d..42256f91 100644 --- a/lib/generators/rolemodel/testing/rspec/rspec_generator.rb +++ b/lib/generators/rolemodel/testing/rspec/rspec_generator.rb @@ -2,8 +2,7 @@ module Rolemodel module Testing - class RspecGenerator < Rails::Generators::Base - include BundlerHelpers + class RspecGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def install_rspec diff --git a/lib/generators/rolemodel/testing/test_prof/test_prof_generator.rb b/lib/generators/rolemodel/testing/test_prof/test_prof_generator.rb index 59c64768..a82cb569 100644 --- a/lib/generators/rolemodel/testing/test_prof/test_prof_generator.rb +++ b/lib/generators/rolemodel/testing/test_prof/test_prof_generator.rb @@ -2,8 +2,7 @@ module Rolemodel module Testing - class TestProfGenerator < Rails::Generators::Base - include BundlerHelpers + class TestProfGenerator < BaseGenerator def install_test_prof gem_group :test do gem 'test-prof' diff --git a/lib/generators/rolemodel/testing/vitest/vitest_generator.rb b/lib/generators/rolemodel/testing/vitest/vitest_generator.rb index b1eaac58..a62271a5 100644 --- a/lib/generators/rolemodel/testing/vitest/vitest_generator.rb +++ b/lib/generators/rolemodel/testing/vitest/vitest_generator.rb @@ -2,7 +2,7 @@ module Rolemodel module Testing - class VitestGenerator < Rails::Generators::Base + class VitestGenerator < BaseGenerator include ReplaceContentHelper source_root File.expand_path('templates', __dir__) diff --git a/lib/generators/rolemodel/ui_components/all_generator.rb b/lib/generators/rolemodel/ui_components/all_generator.rb index c0e7c920..868f977e 100644 --- a/lib/generators/rolemodel/ui_components/all_generator.rb +++ b/lib/generators/rolemodel/ui_components/all_generator.rb @@ -1,6 +1,6 @@ module Rolemodel module UiComponents - class AllGenerator < Rails::Generators::Base + class AllGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def run_all_the_generators diff --git a/lib/generators/rolemodel/ui_components/flash/flash_generator.rb b/lib/generators/rolemodel/ui_components/flash/flash_generator.rb index 308d287f..1cbeeade 100644 --- a/lib/generators/rolemodel/ui_components/flash/flash_generator.rb +++ b/lib/generators/rolemodel/ui_components/flash/flash_generator.rb @@ -2,7 +2,7 @@ module Rolemodel module UiComponents - class FlashGenerator < Rails::Generators::Base + class FlashGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def generate_files diff --git a/lib/generators/rolemodel/ui_components/modals/modals_generator.rb b/lib/generators/rolemodel/ui_components/modals/modals_generator.rb index af4c6483..a3e168b9 100644 --- a/lib/generators/rolemodel/ui_components/modals/modals_generator.rb +++ b/lib/generators/rolemodel/ui_components/modals/modals_generator.rb @@ -1,6 +1,6 @@ module Rolemodel module UiComponents - class ModalsGenerator < Rails::Generators::Base + class ModalsGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) class_option :panels, type: :boolean, default: false, desc: 'Include RoleModel Panel Setup' diff --git a/lib/generators/rolemodel/ui_components/navbar/navbar_generator.rb b/lib/generators/rolemodel/ui_components/navbar/navbar_generator.rb index 6b00ade1..b94a34f4 100644 --- a/lib/generators/rolemodel/ui_components/navbar/navbar_generator.rb +++ b/lib/generators/rolemodel/ui_components/navbar/navbar_generator.rb @@ -2,7 +2,7 @@ module Rolemodel module UiComponents - class NavbarGenerator < Rails::Generators::Base + class NavbarGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) def copy_navbar_files diff --git a/lib/generators/rolemodel/webpack/webpack_generator.rb b/lib/generators/rolemodel/webpack/webpack_generator.rb index 8b709f19..a8c667be 100644 --- a/lib/generators/rolemodel/webpack/webpack_generator.rb +++ b/lib/generators/rolemodel/webpack/webpack_generator.rb @@ -1,5 +1,5 @@ module Rolemodel - class WebpackGenerator < Rails::Generators::Base + class WebpackGenerator < BaseGenerator source_root File.expand_path('templates', __dir__) DEV_DEPS = %w[ diff --git a/lib/generators/templates/generator/%filename%.rb.tt b/lib/generators/templates/generator/%filename%.rb.tt index 90371f74..5c0fa8e2 100644 --- a/lib/generators/templates/generator/%filename%.rb.tt +++ b/lib/generators/templates/generator/%filename%.rb.tt @@ -1,6 +1,6 @@ module Rolemodel <%= "module #{module_name}" if module_name %> - class <%= class_name %> < Rails::Generators::Base + class <%= class_name %> < BaseGenerator source_root File.expand_path('templates', __dir__) def generate_stuff diff --git a/lib/generators/templates/generator_spec/%filename%_spec.rb.tt b/lib/generators/templates/generator_spec/%filename%_spec.rb.tt index c68054c3..88adaafa 100644 --- a/lib/generators/templates/generator_spec/%filename%_spec.rb.tt +++ b/lib/generators/templates/generator_spec/%filename%_spec.rb.tt @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::<%= name.camelize %>Generator, type: :generator do before { run_generator_against_test_app } diff --git a/lib/rolemodel_rails/version.rb b/lib/rolemodel_rails/version.rb index 75ace623..fb9de63e 100644 --- a/lib/rolemodel_rails/version.rb +++ b/lib/rolemodel_rails/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module RolemodelRails - VERSION = '0.24.5' + VERSION = '0.25.0' end diff --git a/rolemodel_rails.gemspec b/rolemodel_rails.gemspec index 17a89bc7..d2703617 100644 --- a/rolemodel_rails.gemspec +++ b/rolemodel_rails.gemspec @@ -15,9 +15,7 @@ Gem::Specification.new do |spec| spec.homepage = 'https://github.com/RoleModel/rolemodel_rails' spec.license = 'MIT' - spec.files = `git ls-files -z`.split("\x0").reject do |f| - f.match(%r{^(test|spec|features|example)/}) - end + spec.files = Dir['{app,lib}/**/*', 'LICENSE.txt', 'Rakefile', 'README.md'] spec.required_ruby_version = '>= 3.4' diff --git a/spec/generators/rolemodel/github_generator_spec.rb b/spec/generators/rolemodel/github_generator_spec.rb index a9978308..5663b5ff 100644 --- a/spec/generators/rolemodel/github_generator_spec.rb +++ b/spec/generators/rolemodel/github_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::GithubGenerator, type: :generator do before do respond_to_prompt with: 'a' # prompt for overriding ci.yml diff --git a/spec/generators/rolemodel/heroku_generator_spec.rb b/spec/generators/rolemodel/heroku_generator_spec.rb index ddf8daa2..d621a0cc 100644 --- a/spec/generators/rolemodel/heroku_generator_spec.rb +++ b/spec/generators/rolemodel/heroku_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::HerokuGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/linters/eslint_generator_spec.rb b/spec/generators/rolemodel/linters/eslint_generator_spec.rb index 2cf15e17..85f46b88 100644 --- a/spec/generators/rolemodel/linters/eslint_generator_spec.rb +++ b/spec/generators/rolemodel/linters/eslint_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::Linters::EslintGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/linters/rubocop_generator_spec.rb b/spec/generators/rolemodel/linters/rubocop_generator_spec.rb index 8520fa0a..d4b1a3c9 100644 --- a/spec/generators/rolemodel/linters/rubocop_generator_spec.rb +++ b/spec/generators/rolemodel/linters/rubocop_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::Linters::RubocopGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/optics/icons_generator_spec.rb b/spec/generators/rolemodel/optics/icons_generator_spec.rb index 9652b772..bc171384 100644 --- a/spec/generators/rolemodel/optics/icons_generator_spec.rb +++ b/spec/generators/rolemodel/optics/icons_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::Optics::IconsGenerator, type: :generator do before do respond_to_prompt with: 'phosphor' # choose an icon library diff --git a/spec/generators/rolemodel/simple_form_generator_spec.rb b/spec/generators/rolemodel/simple_form_generator_spec.rb index 9584fd06..9952dd8c 100644 --- a/spec/generators/rolemodel/simple_form_generator_spec.rb +++ b/spec/generators/rolemodel/simple_form_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::SimpleFormGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/slim_generator_spec.rb b/spec/generators/rolemodel/slim_generator_spec.rb index 2a3fa7f3..e09f2cf0 100644 --- a/spec/generators/rolemodel/slim_generator_spec.rb +++ b/spec/generators/rolemodel/slim_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::SlimGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/source_map_generator_spec.rb b/spec/generators/rolemodel/source_map_generator_spec.rb index 40bf9ad0..38af40bd 100644 --- a/spec/generators/rolemodel/source_map_generator_spec.rb +++ b/spec/generators/rolemodel/source_map_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::SourceMapGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/tailored_select_generator_spec.rb b/spec/generators/rolemodel/tailored_select_generator_spec.rb index 40b9bd38..777804ec 100644 --- a/spec/generators/rolemodel/tailored_select_generator_spec.rb +++ b/spec/generators/rolemodel/tailored_select_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::TailoredSelectGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/testing/jasmine_playwright_spec.rb b/spec/generators/rolemodel/testing/jasmine_playwright_spec.rb index 757d1e01..e2c26c35 100644 --- a/spec/generators/rolemodel/testing/jasmine_playwright_spec.rb +++ b/spec/generators/rolemodel/testing/jasmine_playwright_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::Testing::JasminePlaywrightGenerator, type: :generator do before do run_generator_against_test_app(['--github-package-token=123']) diff --git a/spec/generators/rolemodel/testing/parallel_test_generator_spec.rb b/spec/generators/rolemodel/testing/parallel_test_generator_spec.rb index 30949912..6e570620 100644 --- a/spec/generators/rolemodel/testing/parallel_test_generator_spec.rb +++ b/spec/generators/rolemodel/testing/parallel_test_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::Testing::ParallelTestsGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/testing/rspec_generator_spec.rb b/spec/generators/rolemodel/testing/rspec_generator_spec.rb index b65a33da..0ca7840c 100644 --- a/spec/generators/rolemodel/testing/rspec_generator_spec.rb +++ b/spec/generators/rolemodel/testing/rspec_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::Testing::RspecGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/testing/vitest_generator_spec.rb b/spec/generators/rolemodel/testing/vitest_generator_spec.rb index ba43ea0b..4173dbee 100644 --- a/spec/generators/rolemodel/testing/vitest_generator_spec.rb +++ b/spec/generators/rolemodel/testing/vitest_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::Testing::VitestGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/generators/rolemodel/ui_components/flash_generator_spec.rb b/spec/generators/rolemodel/ui_components/flash_generator_spec.rb index 90951964..fb347393 100644 --- a/spec/generators/rolemodel/ui_components/flash_generator_spec.rb +++ b/spec/generators/rolemodel/ui_components/flash_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::UiComponents::FlashGenerator, type: :generator do destination File.expand_path('../../tmp', File.dirname(__FILE__)) diff --git a/spec/generators/rolemodel/ui_components/modal_generator_spec.rb b/spec/generators/rolemodel/ui_components/modal_generator_spec.rb index cd923fbb..6fb67255 100644 --- a/spec/generators/rolemodel/ui_components/modal_generator_spec.rb +++ b/spec/generators/rolemodel/ui_components/modal_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::UiComponents::ModalsGenerator, type: :generator do destination File.expand_path('../../tmp/', File.dirname(__FILE__)) diff --git a/spec/generators/rolemodel/ui_components/navbar_generator_spec.rb b/spec/generators/rolemodel/ui_components/navbar_generator_spec.rb index 455af95b..d5dee360 100644 --- a/spec/generators/rolemodel/ui_components/navbar_generator_spec.rb +++ b/spec/generators/rolemodel/ui_components/navbar_generator_spec.rb @@ -1,5 +1,3 @@ -require 'spec_helper' - RSpec.describe Rolemodel::UiComponents::NavbarGenerator, type: :generator do destination File.expand_path('../../tmp/', File.dirname(__FILE__)) diff --git a/spec/generators/rolemodel/webpack_generator_spec.rb b/spec/generators/rolemodel/webpack_generator_spec.rb index a737a5b1..07f76401 100644 --- a/spec/generators/rolemodel/webpack_generator_spec.rb +++ b/spec/generators/rolemodel/webpack_generator_spec.rb @@ -1,7 +1,3 @@ -# frozen_string_literal: true - -require 'spec_helper' - RSpec.describe Rolemodel::WebpackGenerator, type: :generator do before { run_generator_against_test_app } diff --git a/spec/helpers/frame_link_helper_spec.rb b/spec/helpers/frame_link_helper_spec.rb index 0fb669e6..4c30da32 100644 --- a/spec/helpers/frame_link_helper_spec.rb +++ b/spec/helpers/frame_link_helper_spec.rb @@ -1,5 +1,4 @@ -require 'spec_helper' -require 'action_view/helpers' +require 'action_view' require 'generators/rolemodel/ui_components/modals/templates/app/helpers/turbo_frame_link_helper.rb' RSpec.describe TurboFrameLinkHelper, type: :helper do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c3737c88..a6fa1724 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,15 +1,11 @@ -require "bundler/setup" -require "rolemodel_rails" -require "rails/all" -require "rails/generators" -require "generator_spec" -require_relative "./support/helpers" - -Dir[File.expand_path('lib/generators/rolemodel/**/*_generator.rb', Dir.pwd)].each { require it } +require 'bundler/setup' +require 'generator_spec' +require_relative 'support/helpers' +require 'generators/rolemodel' RSpec.configure do |config| # Enable flags like --only-failures and --next-failure - config.example_status_persistence_file_path = ".rspec_status" + config.example_status_persistence_file_path = '.rspec_status' # Disable RSpec exposing methods globally on `Module` and `main` config.disable_monkey_patching!