Sha256: 40a40d0be87394276057d464902f418748bdb7d4d2011453ea653c8cecd75bcc

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

require 'rails'
require 'rails/generators'

module Solidus
  module Views
    class OverrideGenerator < ::Rails::Generators::Base
      def self.views_folder
        Spree::Frontend::Engine.root.join('app', 'views', 'spree')
      end

      VIEWS = Dir.glob(views_folder.join('**', '*'))

      desc "Override solidus frontend views in your app. You can either provide single files or complete folders."

      class_option :only,
        type: :string,
        default: nil,
        desc: "Name of file or folder to copy exclusively. Can be a substring."

      source_root views_folder

      def copy_views
        views_to_copy.each do |file|
          next if File.directory?(file)
          dest_file = Pathname.new(file).relative_path_from(source_dir)
          copy_file file, Rails.root.join('app', 'views', 'spree', dest_file)
        end
      end

      private

      def views_to_copy
        if @options['only']
          VIEWS.select do |v|
            Pathname.new(v).relative_path_from(source_dir).to_s.include?(@options['only'])
          end
        else
          VIEWS
        end
      end

      def source_dir
        self.class.views_folder
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
solidus_frontend-2.5.2 lib/generators/solidus/views/override_generator.rb
solidus_frontend-2.5.1 lib/generators/solidus/views/override_generator.rb
solidus_frontend-2.5.0 lib/generators/solidus/views/override_generator.rb
solidus_frontend-2.5.0.rc1 lib/generators/solidus/views/override_generator.rb
solidus_frontend-2.5.0.beta2 lib/generators/solidus/views/override_generator.rb
solidus_frontend-2.5.0.beta1 lib/generators/solidus/views/override_generator.rb