Class: Markdowndocs::Generators::InstallGenerator

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

Instance Method Summary collapse

Instance Method Details

#add_markdowndocs_importObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/markdowndocs/install/install_generator.rb', line 23

def add_markdowndocs_import
  js_file = Rails.root.join("app/javascript/application.js").to_s
  return unless File.exist?(js_file)

  js_content = File.read(js_file)
  import_line = 'import "markdowndocs"'

  if js_content.include?(import_line)
    say_status :skip, "markdowndocs import already present in application.js", :yellow
  else
    append_to_file js_file, "\n#{import_line}\n"
    say_status :import, "markdowndocs in application.js", :green
  end
end

#add_routeObject



19
20
21
# File 'lib/generators/markdowndocs/install/install_generator.rb', line 19

def add_route
  route 'mount Markdowndocs::Engine, at: "/docs"'
end

#create_docs_directoryObject



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

def create_docs_directory
  empty_directory "app/docs"
  create_file "app/docs/.keep"
end

#create_initializerObject



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

def create_initializer
  template "initializer.rb", "config/initializers/markdowndocs.rb"
end

#inject_tailwind_sourceObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/generators/markdowndocs/install/install_generator.rb', line 38

def inject_tailwind_source
  css_file = find_tailwind_css_file
  return unless css_file

  gem_views_path = Markdowndocs::Engine.root.join("app", "views")
  source_line = %(@source "#{gem_views_path}/**/*.erb";)

  if File.read(css_file).include?(source_line)
    say_status :skip, "Tailwind @source for markdowndocs already present", :yellow
    return
  end

  inject_into_file css_file, after: %(@import "tailwindcss";\n) do
    "\n/* Markdowndocs gem views — required so Tailwind scans the gem's templates */\n#{source_line}\n"
  end

  say_status :inject, "Tailwind @source for markdowndocs views", :green
end

#show_post_install_messageObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/generators/markdowndocs/install/install_generator.rb', line 57

def show_post_install_message
  say ""
  say "Markdowndocs installed successfully!", :green
  say ""
  say "Next steps:"
  say "  1. Edit config/initializers/markdowndocs.rb to configure categories"
  say "  2. Add markdown files to app/docs/"
  say "  3. Visit /docs to see your documentation"
  say ""
  unless find_tailwind_css_file
    say "  NOTE: Could not find your Tailwind CSS file.", :yellow
    say "  Add this line after @import \"tailwindcss\" in your CSS:"
    say "    @source \"#{Markdowndocs::Engine.root.join("app", "views")}/**/*.erb\";"
    say ""
  end
  say "  Stimulus controllers are auto-registered via: import \"markdowndocs\"", :green
  say "  If this was not added automatically, add it to app/javascript/application.js"
  say ""
end