Sha256: 77b35567505d882c1009d974ad4fc376a6cea9d42d3bff78b5303c3cbb3f4908

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'rails/generators/base'

module Mtdevise
  module Generators

    module ViewPathTemplates
      extend ActiveSupport::Concern

        included do
          class_option :views, aliases: "-v", type: :array, desc: "Select specific view directories to generate (devise, layouts, mtdevise)"
          public_task :copy_views
        end

        # module ClassMethods
        #   def hide!
        #     Rails::Generators.hide_namespace self.namespace
        #   end
        # end

        def copy_views
          if options[:views]
            options[:views].each do |directory|
              view_directory directory.to_sym
            end
            else
              view_directory :devise
              view_directory :layouts
              view_directory :shared
              view_directory :mtdevise
          end
        end

      protected

      def view_directory(name, _target_path = nil)
        directory name.to_s, _target_path || "#{target_path}/#{name}" do |content|
          content
        end
      end

      def target_path
        @target_path ||= "app/views"
      end

    end

    class SharedViewsGenerator < Rails::Generators::Base
      include ViewPathTemplates
      source_root File.expand_path("../../../../app/views", __FILE__)
      desc "Copies Mtdevise views to your application."
      hide!
    end

    class ViewsGenerator < Rails::Generators::Base
      desc "Copies Mtdevise views to your application."
      invoke SharedViewsGenerator
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mtdevise-5.0.1 lib/generators/mtdevise/views_generator.rb