# frozen_string_literal: true module SolidusBraintree module Generators class InstallGenerator < Rails::Generators::Base class_option :auto_run_migrations, type: :boolean, default: false source_root File.expand_path('templates', __dir__) def setup_initializer legacy_initializer_pathname = Pathname.new(destination_root).join('config/initializers/solidus_paypal_braintree.rb') if legacy_initializer_pathname.exist? legacy_initializer_pathname.rename('config/initializers/solidus_braintree.rb') gsub_file 'config/initializers/solidus_braintree.rb', "SolidusPaypalBraintree.configure do |config|\n", "SolidusBraintree.configure do |config|\n" else template 'initializer.rb', 'config/initializers/solidus_braintree.rb' end end def setup_javascripts gsub_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_paypal_braintree\n", '' append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_braintree\n" gsub_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_paypal_braintree\n", '' append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_braintree\n" end def setup_stylesheets gsub_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_paypal_braintree\n", '' inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_braintree\n", before: %r{\*/}, verbose: true gsub_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_paypal_braintree\n", '' inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_braintree\n", before: %r{\*/}, verbose: true end def add_migrations rake 'railties:install:migrations FROM=solidus_braintree' end def mount_engine gsub_file 'config/routes.rb', "mount SolidusPaypalBraintree::Engine, at: '/solidus_paypal_braintree'\n", '' route "mount SolidusBraintree::Engine, at: '/solidus_braintree'" end def run_migrations run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]')) if run_migrations rake 'db:migrate' else puts 'Skipping bin/rails db:migrate, don\'t forget to run it!' # rubocop:disable Rails/Output end end end end end