Class: SwalRails::Generators::InstallGenerator

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

Constant Summary collapse

ASSETS_MODES =
%w[importmap jsbundling sprockets auto].freeze

Instance Method Summary collapse

Instance Method Details

#configure_assetsObject



30
31
32
33
34
35
36
# File 'lib/generators/swal_rails/install/install_generator.rb', line 30

def configure_assets
  case resolved_assets_mode
  when "importmap"  then install_importmap
  when "jsbundling" then install_jsbundling
  when "sprockets"  then install_sprockets
  end
end

#copy_initializerObject



26
27
28
# File 'lib/generators/swal_rails/install/install_generator.rb', line 26

def copy_initializer
  template "initializer.rb", "config/initializers/swal_rails.rb"
end

#inject_meta_tagsObject



38
39
40
41
42
43
44
45
46
47
# File 'lib/generators/swal_rails/install/install_generator.rb', line 38

def inject_meta_tags
  return if options[:skip_layout]

  layout = "app/views/layouts/application.html.erb"
  return say_status(:skip, "#{layout} not found", :yellow) unless file_exists?(layout)

  inject_into_file layout, before: %r{</head>} do
    "    <%= swal_rails_meta_tags %>\n  "
  end
end

#show_readmeObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/generators/swal_rails/install/install_generator.rb', line 49

def show_readme
  readme_text = <<~TXT

    swal_rails installed.

    Next steps:
      1. Edit config/initializers/swal_rails.rb to customize flash_map / confirm_mode.
      2. Ensure <%= swal_rails_meta_tags %> is rendered in your <head>.
      3. Import the runtime in your JS entrypoint:
           import "swal_rails"

    Confirm mode: #{options[:confirm_mode]}
    Assets mode:  #{resolved_assets_mode}
  TXT
  say readme_text, :green
end

#validate_options!Object

Raises:

  • (Thor::Error)


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

def validate_options!
  mode = (options[:mode] || "auto").to_s
  return if ASSETS_MODES.include?(mode)

  raise Thor::Error, "--mode must be one of #{ASSETS_MODES.join(", ")}"
end