Class: Voidable::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Voidable::Generators::InstallGenerator
- Defined in:
- lib/generators/voidable/install/install_generator.rb
Instance Method Summary collapse
- #add_js_import ⇒ Object
- #create_initializer ⇒ Object
- #create_layout ⇒ Object
- #create_layout_assets ⇒ Object
- #install_devise_views ⇒ Object
- #pin_packages ⇒ Object
- #setup_layout_switching ⇒ Object
Instance Method Details
#add_js_import ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/generators/voidable/install/install_generator.rb', line 89 def add_js_import js_entrypoint = "app/javascript/application.js" return unless File.exist?(js_entrypoint) return if File.read(js_entrypoint).include?("@voidable/ui") prepend_to_file js_entrypoint, "import \"@voidable/ui\";\nimport \"@voidable/ui-hotwire\";\n\n" say "Added Voidable imports to application.js", :green end |
#create_initializer ⇒ Object
10 11 12 |
# File 'lib/generators/voidable/install/install_generator.rb', line 10 def create_initializer template "initializer.rb.tt", "config/initializers/voidable.rb" end |
#create_layout ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/generators/voidable/install/install_generator.rb', line 27 def create_layout copy_file "_settings_menu.html.erb", "app/views/layouts/_settings_menu.html.erb" case [:layout] when "sidebar" template "application_sidebar.html.erb.tt", "app/views/layouts/application.html.erb", force: true when "switching" template "application_topbar.html.erb.tt", "app/views/layouts/application.html.erb", force: true template "topbar.html.erb.tt", "app/views/layouts/topbar.html.erb" template "sidebar.html.erb.tt", "app/views/layouts/sidebar.html.erb" else template "application_topbar.html.erb.tt", "app/views/layouts/application.html.erb", force: true end say "Created Voidable application layout (#{[:layout]})", :green end |
#create_layout_assets ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/generators/voidable/install/install_generator.rb', line 43 def create_layout_assets copy_file "voidable-layout.js", "app/assets/javascripts/voidable-layout.js" copy_file "voidable-devise.css", "app/assets/stylesheets/voidable-devise.css" assets_init = "config/initializers/assets.rb" if File.exist?(assets_init) && !File.read(assets_init).include?("javascripts") append_to_file assets_init, <<~RUBY # Voidable layout scripts Rails.application.config.assets.paths << Rails.root.join("app/assets/javascripts") RUBY end case [:layout] when "sidebar" copy_file "voidable-layout-sidebar.css", "app/assets/stylesheets/voidable-layout.css", force: true when "switching" copy_file "voidable-layout-topbar.css", "app/assets/stylesheets/voidable-layout-topbar.css" copy_file "voidable-layout-sidebar.css", "app/assets/stylesheets/voidable-layout-sidebar.css" else copy_file "voidable-layout-topbar.css", "app/assets/stylesheets/voidable-layout.css", force: true end say "Created Voidable layout assets", :green end |
#install_devise_views ⇒ Object
105 106 107 108 109 |
# File 'lib/generators/voidable/install/install_generator.rb', line 105 def install_devise_views return unless defined?(Devise) generate "voidable:devise_views" say "Installed Voidable-styled Devise views", :green end |
#pin_packages ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/generators/voidable/install/install_generator.rb', line 14 def pin_packages importmap = "config/importmap.rb" return unless File.exist?(importmap) return if File.read(importmap).include?("@voidable/ui") append_to_file importmap, <<~RUBY # Voidable UI pin "@voidable/ui", to: "https://ga.jspm.io/npm:@voidable/ui@0.0.1/dist/ui.js" pin "@voidable/ui-hotwire", to: "https://ga.jspm.io/npm:@voidable/ui-hotwire@0.0.1/dist/hotwire.js" RUBY say "Pinned @voidable/ui and @voidable/ui-hotwire in importmap", :green end |
#setup_layout_switching ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/generators/voidable/install/install_generator.rb', line 68 def setup_layout_switching return unless [:layout] == "switching" template "settings_controller.rb.tt", "app/controllers/settings_controller.rb" route 'post "toggle_layout", to: "settings#toggle_layout"' inject_into_class "app/controllers/application_controller.rb", "ApplicationController", <<-RUBY layout :resolve_layout private def resolve_layout cookies[:layout] || "topbar" end RUBY say "Configured layout switching (topbar/sidebar toggle)", :green end |