Class: Layered::Assistant::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Layered::Assistant::Generators::InstallGenerator
- Defined in:
- lib/generators/layered/assistant/install_generator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #add_css_import ⇒ Object
- #add_js_import ⇒ Object
- #copy_css ⇒ Object
- #copy_initializer ⇒ Object
- #copy_migrations ⇒ Object
- #mount_engine ⇒ Object
- #show_instructions ⇒ Object
- #verify_layered_ui_dependency ⇒ Object
Class Method Details
Instance Method Details
#add_css_import ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 41 def add_css_import application_css = "app/assets/tailwind/application.css" return unless File.exist?(application_css) content = File.read(application_css) import_line = '@import "./layered_assistant";' return if content.match?(%r{@import\s+['"]\.?/?layered_assistant['"]}) # Insert after the layered_ui import (which must already be present) inject_into_file application_css, "\n#{import_line}", after: %r{@import\s+['"]\.?/?layered_ui['"];?} say "Added import to #{application_css}", :green end |
#add_js_import ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 56 def add_js_import application_js = "app/javascript/application.js" return unless File.exist?(application_js) content = File.read(application_js) import_line = 'import "layered_assistant"' return if content.match?(%r{import\s+['"]layered_assistant['"]}) # Insert after the layered_ui import (which must already be present) inject_into_file application_js, "\n#{import_line}", after: %r{import\s+['"]layered_ui['"];?} say "Added import to #{application_js}", :green end |
#copy_css ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 24 def copy_css source_path = File.join(self.class.source_root, "app/assets/tailwind/layered/assistant/styles.css") source_content = File.read(source_path) header = <<~CSS /* * layered-assistant-rails v#{Layered::Assistant::VERSION} * * This file was automatically generated by the layered:assistant:install generator. * Do not modify directly. To update, re-run: bin/rails generate layered:assistant:install */ CSS create_file "app/assets/tailwind/layered_assistant.css", header + source_content, force: true end |
#copy_initializer ⇒ Object
71 72 73 74 75 76 77 78 79 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 71 def copy_initializer initializer_path = "config/initializers/layered_assistant.rb" return if File.exist?(initializer_path) template_path = File.("templates/initializer.rb", __dir__) create_file initializer_path, File.read(template_path) say "Created #{initializer_path}", :green end |
#copy_migrations ⇒ Object
95 96 97 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 95 def copy_migrations invoke "layered:assistant:migrations" end |
#mount_engine ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 81 def mount_engine routes_file = "config/routes.rb" return unless File.exist?(routes_file) content = File.read(routes_file) mount_line = 'mount Layered::Assistant::Engine => "/layered/assistant"' return if content.include?("Layered::Assistant::Engine") inject_into_file routes_file, " #{mount_line}\n\n", after: "Rails.application.routes.draw do\n" say "Mounted engine in #{routes_file}", :green end |
#show_instructions ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 99 def show_instructions say "" say "layered-assistant-rails installed successfully", :green say "" say "Next steps:", :yellow say " 1. Run bin/rails db:migrate" say " 2. Configure authorization in config/initializers/layered_assistant.rb" say " 3. Routes return 403 until you uncomment an authorize block" say " 4. Visit /layered/assistant to get started" say "" end |
#verify_layered_ui_dependency ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/generators/layered/assistant/install_generator.rb', line 11 def verify_layered_ui_dependency application_css = "app/assets/tailwind/application.css" application_js = "app/javascript/application.js" css_ok = File.exist?(application_css) && File.read(application_css).match?(%r{@import\s+['"]\.?/?layered_ui['"]}) js_ok = File.exist?(application_js) && File.read(application_js).match?(%r{import\s+['"]layered_ui['"]}) unless css_ok && js_ok say "layered-ui-rails is not installed yet - installing now...", :yellow invoke "layered:ui:install" end end |