codn/adminpanel

View on GitHub
lib/generators/adminpanel/initialize/initialize_generator.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'rails/generators/active_record'
module Adminpanel
  class InitializeGenerator < ActiveRecord::Generators::Base
    desc 'Generate the migrations necessary to start the gem'
    source_root File.expand_path("../templates", __FILE__)
    argument :name, type: :string, default: 'default', require: false
    class_option :'skip-section-uploader',
                  type: :boolean,
                  aliases: '-u',
                  default: false,
                  desc: 'Skip section uploader if true'
    class_option :'skip-migration',
                  type: :boolean,
                  aliases: '-m',
                  default: false,
                  desc: 'Skip initial migrations if true'
    class_option :'skip-setup',
                  type: :boolean,
                  aliases: '-p',
                  default: false,
                  desc: 'Skip setup if true'
    class_option :'skip-mount-engine',
                  type: :boolean,
                  aliases: '-engine',
                  default: false,
                  desc: 'Inject engine into routes'

    def create_initializer
      if !options[:'skip-setup']
        copy_file 'adminpanel_setup.rb', 'config/initializers/adminpanel_setup.rb'
      end
    end

    def create_section_uploader
      if !options[:'skip-section-uploader']
        copy_file 'section_uploader.rb', 'app/uploaders/adminpanel/section_uploader.rb'
      end
    end

    def inject_engine_into_routes
      if !options[:'skip-mount-engine'] && Dir.exists?(Rails.root.join('config')) && File.exists?(Rails.root.join('config', 'routes.rb'))
        inject_into_file 'config/routes.rb', after: 'Rails.application.routes.draw do' do
          indent "\n  mount Adminpanel::Engine => '/panel'"
        end
      end
    end

    def create_adminpanel_migration
      if !options[:'skip-migration']
        migration_template 'create_adminpanel_tables.rb', 'db/migrate/create_adminpanel_tables.rb'
      end
    end

  end
end