lib/hanamismith/builders/bundler.rb in hanamismith-0.34.0 vs lib/hanamismith/builders/bundler.rb in hanamismith-0.37.0
- old
+ new
@@ -6,109 +6,98 @@
module Builders
# Builds project skeleton with Gemfile configuration.
class Bundler < Rubysmith::Builders::Bundler
using Refinements::Struct
- # :reek:TooManyStatements
def call
super
- insert_main_dependencies
- insert_persistence_dependencies
- alter_groups
- insert_development_group
- insert_test_group
- insert_development_and_test_group
+
+ %i[groups hanami main persistence quality devtest development test].each do |name|
+ __send__ :"insert_#{name}"
+ end
+
remove_zeitwerk
configuration
end
private
- attr_reader :configuration, :builder
+ def insert_groups
+ return unless configuration.build_minimum
- # rubocop:todo Metrics/MethodLength
- def insert_main_dependencies
- with_template.insert_after("source", %(gem "dry-monads", "~> 1.6"))
- .insert_after("source", %(gem "dry-schema", "~> 1.13"\n))
- .insert_after("source", %(gem "dry-types", "~> 1.7"\n))
- .insert_after("source", %(gem "dry-validation", "~> 1.10"\n))
- .insert_after("source", %(gem "hanami", "~> 2.1"\n))
- .insert_after("source", %(gem "hanami-assets", "~> 2.1"\n))
- .insert_after("source", %(gem "hanami-cli", "~> 2.1"\n))
- .insert_after("source", %(gem "hanami-controller", "~> 2.1"\n))
- .insert_after("source", %(gem "hanami-router", "~> 2.1"\n))
- .insert_after("source", %(gem "hanami-validations", "~> 2.1"\n))
- .insert_after("source", %(gem "hanami-view", "~> 2.1"\n))
- .insert_after("source", %(gem "htmx", "~> 1.0"\n))
- .insert_after("source", %(gem "puma", "~> 6.4"\n))
- .insert_after("source", %(gem "rack-attack", "~> 6.7"\n))
- end
- # rubocop:enable Metrics/MethodLength
+ with_template.append <<~CONTENT
+ group :development do
+ end
- def insert_persistence_dependencies
- with_template.insert_after("source", %(gem "pg", "~> 1.5"\n))
- .insert_after("source", %(gem "rom", "~> 5.3"\n))
- .insert_after("source", %(gem "rom-sql", "~> 3.6"\n))
- .insert_after("source", %(\ngem "sequel", "~> 5.77"\n))
+ group :test do
+ end
+ CONTENT
end
- # rubocop:todo Metrics/MethodLength
- def alter_groups
- with_template.insert_after(/group :quality/, %( gem "rubocop-sequel", "~> 0.3"\n))
- .insert_after(
- /group :development do/,
- %( gem "hanami-webconsole", "~> 2.1"\n)
- )
- .insert_after(/group :development do/, %( gem "localhost", "~> 1.2"\n))
- .insert_after(/group :development do/, %( gem "rerun", "~> 0.14"\n))
- .insert_after(/group :test/, %( gem "capybara", "~> 3.40"\n))
- .insert_after(/group :test/, %( gem "cuprite", "~> 0.15"\n))
- .insert_after(/group :test/, %( gem "database_cleaner-sequel", "~> 2.0"\n))
- .insert_after(/group :test/, %( gem "launchy", "~> 3.0"\n))
- .insert_after(/group :test/, %( gem "rack-test", "~> 2.1"\n))
- .insert_after(/group :test/, %( gem "rom-factory", "~> 0.12"\n))
+ def insert_hanami
+ with_template.insert_after "source", <<~CONTENT.strip
+ gem "hanami", "~> 2.1"
+ gem "hanami-assets", "~> 2.1"
+ gem "hanami-cli", "~> 2.1"
+ gem "hanami-controller", "~> 2.1"
+ gem "hanami-router", "~> 2.1"
+ gem "hanami-validations", "~> 2.1"
+ gem "hanami-view", "~> 2.1"
+ CONTENT
end
- # rubocop:enable Metrics/MethodLength
- def insert_development_group
- return if configuration.markdown? || configuration.build_rake
-
- with_template.insert_before(/group :tools do/, <<~CONTENT)
- group :development do
- gem "hanami-webconsole", "~> 2.1"
- gem "localhost", "~> 1.2"
- gem "rerun", "~> 0.14"
- end
-
+ def insert_main
+ with_template.insert_after "source", <<~CONTENT
+ gem "dry-monads", "~> 1.6"
+ gem "dry-schema", "~> 1.13"
+ gem "dry-types", "~> 1.7"
+ gem "dry-validation", "~> 1.10"
+ gem "htmx", "~> 1.0"
+ gem "puma", "~> 6.4"
+ gem "rack-attack", "~> 6.7"
CONTENT
end
- # rubocop:todo Metrics/MethodLength
- def insert_test_group
- return if configuration.build_guard || configuration.build_rspec
+ def insert_persistence
+ with_template.insert_after "source", <<~CONTENT
- with_template.insert_before(/group :tools do/, <<~CONTENT)
- group :test do
- gem "capybara", "~> 3.40"
- gem "cuprite", "~> 0.15"
- gem "database_cleaner-sequel", "~> 2.0"
- gem "hanami-rspec", "~> 2.1"
- gem "launchy", "~> 3.0"
- gem "rack-test", "~> 2.1"
- gem "rom-factory", "~> 0.12"
- end
-
+ gem "pg", "~> 1.5"
+ gem "rom", "~> 5.3"
+ gem "rom-sql", "~> 3.6"
+ gem "sequel", "~> 5.77"
CONTENT
end
- # rubocop:enable Metrics/MethodLength
- def insert_development_and_test_group
+ def insert_quality
+ with_template.insert_after(/group :quality/, %( gem "rubocop-sequel", "~> 0.3"\n))
+ end
+
+ def insert_devtest
with_template.insert_before(/group :development/, <<~CONTENT)
group :development, :test do
gem "dotenv", "~> 3.0"
end
+ CONTENT
+ end
+
+ def insert_development
+ with_template.insert_after(/group :development do/, <<~CONTENT.gsub("gem", " gem"))
+ gem "hanami-webconsole", "~> 2.1"
+ gem "localhost", "~> 1.2"
+ gem "rerun", "~> 0.14"
+ CONTENT
+ end
+
+ def insert_test
+ with_template.insert_after(/group :test/, <<~CONTENT.gsub("gem", " gem"))
+ gem "capybara", "~> 3.40"
+ gem "cuprite", "~> 0.15"
+ gem "database_cleaner-sequel", "~> 2.0"
+ gem "launchy", "~> 3.0"
+ gem "rack-test", "~> 2.1"
+ gem "rom-factory", "~> 0.12"
CONTENT
end
def remove_zeitwerk = with_template.replace(/.+zeitwerk.+\n\n/, "\n")