Class: Sileo::Generators::InstallGenerator

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

Instance Method Summary collapse

Instance Method Details

#add_javascript_bootstrapObject



42
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/sileo/install_generator.rb', line 42

def add_javascript_bootstrap
  if File.exist?("app/javascript/controllers/application.js")
    bootstrap = File.read("app/javascript/controllers/application.js")
    unless bootstrap.include?("registerSileoControllers")
      append_to_file "app/javascript/controllers/application.js" do
        <<~JS

          import { registerSileoControllers } from "sileo/controllers"
          registerSileoControllers(application)
        JS
      end
    end
  end

  return unless File.exist?("app/javascript/application.js")
  app_js = File.read("app/javascript/application.js")
  return if app_js.include?("import \"sileo\"")

  append_to_file "app/javascript/application.js" do
    <<~JS

      import "sileo"
    JS
  end
end

#create_initializerObject



72
73
74
75
76
# File 'lib/generators/sileo/install_generator.rb', line 72

def create_initializer
  return if options[:skip_initializer]

  copy_file "sileo.rb", "config/initializers/sileo.rb"
end

#create_toaster_partialObject



68
69
70
# File 'lib/generators/sileo/install_generator.rb', line 68

def create_toaster_partial
  copy_file "_sileo_toaster.html.erb", "app/views/application/_sileo_toaster.html.erb"
end

#ensure_importmap_pinsObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/generators/sileo/install_generator.rb', line 10

def ensure_importmap_pins
  return unless File.exist?("config/importmap.rb")
  importmap = File.read("config/importmap.rb")
  return if importmap.include?("pin \"sileo\"")

  append_to_file "config/importmap.rb" do
    <<~RUBY

      # Sileo Rails
      pin "sileo", to: "sileo/index.js"
      pin "sileo/install", to: "sileo/install.js"
      pin "sileo/store", to: "sileo/store.js"
      pin "sileo/controllers", to: "sileo/controllers/index.js"
      pin "sileo/controllers/toaster_controller", to: "sileo/controllers/toaster_controller.js"
    RUBY
  end
end

#include_stylesheetObject



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/generators/sileo/install_generator.rb', line 28

def include_stylesheet
  if File.exist?("app/assets/stylesheets/application.css")
    css = File.read("app/assets/stylesheets/application.css")
    return if css.include?("sileo.css")
    append_to_file "app/assets/stylesheets/application.css", "\n@import \"sileo.css\";\n"
  elsif File.exist?("app/assets/stylesheets/application.scss")
    scss = File.read("app/assets/stylesheets/application.scss")
    return if scss.include?("@import 'sileo'")
    append_to_file "app/assets/stylesheets/application.scss", "\n@import 'sileo';\n"
  else
    create_file "app/assets/stylesheets/sileo_import.css", "@import \"sileo.css\";\n"
  end
end


78
79
80
81
# File 'lib/generators/sileo/install_generator.rb', line 78

def print_next_steps
  say "\nSileo Rails installed.", :green
  say "Add <%= render 'application/sileo_toaster' %> to your application layout.", :yellow
end