def node_version ENV["NODE_VERSION"] || `node --version`[/\d+\.\d+\.\d+/] end def node_not_installed? !node_version.present? end def node_version_unsupported? node_version < "20.0.0" end def apply_template! if node_not_installed? || node_version_unsupported? message = <<~ERROR === Node version unsupported === Suspenders requires Node >= 20.0.0 ERROR fail Rails::Generators::Error, message end if options[:database] == "postgresql" && options[:skip_test] && options[:skip_rubocop] after_bundle do gem_group :development, :test do if ARGV.include?("--suspenders-main") gem "suspenders", github: "thoughtbot/suspenders", branch: "main" else gem "suspenders" end end run "bundle install" generate "suspenders:install:web" rails_command "db:prepare" rails_command "db:migrate" say "\nCongratulations! You just pulled our suspenders." end else message = <<~ERROR === Please use the correct options === # Use the latest suspenders release: rails new <app_name> \\ --skip-rubocop \\ --skip-test \\ -d=postgresql \\ -m=https://raw.githubusercontent.com/thoughtbot/suspenders/main/lib/install/web.rb # OR use the current (possibly unreleased) `main` branch of suspenders: rails new <app_name> \\ --suspenders-main \\ --skip-rubocop \\ --skip-test \\ -d=postgresql \\ -m=https://raw.githubusercontent.com/thoughtbot/suspenders/main/lib/install/web.rb ERROR fail Rails::Generators::Error, message end end apply_template!