Class: DlnkToast::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/dlnk_toast/install/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#copy_initializerObject



10
11
12
# File 'lib/generators/dlnk_toast/install/install_generator.rb', line 10

def copy_initializer
  copy_file "initializer.rb", "config/initializers/dlnk_toast.rb"
end

#create_stimulus_bridgeObject



21
22
23
24
# File 'lib/generators/dlnk_toast/install/install_generator.rb', line 21

def create_stimulus_bridge
  create_file "app/javascript/controllers/dlnk_toast_controller.js",
    %(export { default } from "dlnk_toast/toast_controller"\n)
end

#display_post_installObject



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/generators/dlnk_toast/install/install_generator.rb', line 55

def display_post_install
  say ""
  say "DlnkToast installed!", :green
  say ""
  say "  Stylesheet:  dlnk_toast/application.css added to layouts"
  say "  Controller:  dlnk_toast_controller.js bridge created"
  say "  Partial:     dlnk_toast/toast injected before </body>"
  say "  Config:      config/initializers/dlnk_toast.rb"
  say ""
  say "Customize colors by overriding --dlnk-toast-* CSS variables."
end

#inject_stylesheetObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/generators/dlnk_toast/install/install_generator.rb', line 26

def inject_stylesheet
  %w[application admin auth].each do |layout|
    path = "app/views/layouts/#{layout}.html.erb"
    next unless File.exist?(path)

    content = File.read(path)
    next if content.include?("dlnk_toast/application")

    inject_into_file path,
      after: /stylesheet_link_tag\s+:app.*\n/ do
      %(    <%= stylesheet_link_tag "dlnk_toast/application", "data-turbo-track": "reload" %>\n)
    end
  end
end

#inject_toast_partialObject



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/generators/dlnk_toast/install/install_generator.rb', line 41

def inject_toast_partial
  %w[application admin auth].each do |layout|
    path = "app/views/layouts/#{layout}.html.erb"
    next unless File.exist?(path)

    content = File.read(path)
    next if content.include?("dlnk_toast/toast")

    inject_into_file path, before: "</body>" do
      "\n    <%= render \"dlnk_toast/toast\" %>\n  "
    end
  end
end

#setup_importmapObject



14
15
16
17
18
19
# File 'lib/generators/dlnk_toast/install/install_generator.rb', line 14

def setup_importmap
  return unless File.exist?("config/importmap.rb")

  append_to_file "config/importmap.rb",
    %(\npin "dlnk_toast/toast_controller", to: "dlnk_toast/toast_controller.js"\n)
end