PHCNetworks/multi-tenancy-devise

View on GitHub
lib/generators/mtdevise/views_generator.rb

Summary

Maintainability
A
0 mins
Test Coverage
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