Class: RubyCms::Generators::AdminPageGenerator
- Inherits:
-
Rails::Generators::NamedBase
- Object
- Rails::Generators::NamedBase
- RubyCms::Generators::AdminPageGenerator
- Defined in:
- lib/generators/ruby_cms/admin_page_generator.rb
Instance Method Summary collapse
- #add_page_registration ⇒ Object
- #add_route ⇒ Object
- #create_controller ⇒ Object
- #create_view ⇒ Object
- #show_next_steps ⇒ Object
- #validate_options ⇒ Object
Instance Method Details
#add_page_registration ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/generators/ruby_cms/admin_page_generator.rb', line 64 def add_page_registration pages_file = Rails.root.join("config/initializers/ruby_cms_pages.rb") registration = register_page_code if pages_file.exist? content = File.read(pages_file) if content.include?("key: :#{file_name}") say "Page registration already exists, skipping.", :yellow return end append_to_file pages_file.to_s, "\n#{registration}\n" else create_file pages_file.to_s, "# frozen_string_literal: true\n\n#{registration}\n" end say "Registered page :#{file_name} in config/initializers/ruby_cms_pages.rb", :green end |
#add_route ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/generators/ruby_cms/admin_page_generator.rb', line 38 def add_route routes_path = Rails.root.join("config/routes.rb") return unless routes_path.exist? content = File.read(routes_path) route_line = " resources :#{plural_name}, only: [:index], controller: \"admin/#{file_name}\"" if content.include?("resources :#{plural_name}") && content.include?("admin/#{file_name}") say "Route already exists, skipping.", :yellow return end if content.match?(/namespace\s+:admin\s+do/) inject_into_file routes_path.to_s, after: /namespace\s+:admin\s+do\s*\n/ do "#{route_line}\n" end else route <<~RUBY namespace :admin do #{route_line} end RUBY end say "Route: added admin/#{plural_name}", :green end |
#create_controller ⇒ Object
28 29 30 31 |
# File 'lib/generators/ruby_cms/admin_page_generator.rb', line 28 def create_controller template "controller.rb.tt", File.join("app/controllers/admin", "#{file_name}_controller.rb") end |
#create_view ⇒ Object
33 34 35 36 |
# File 'lib/generators/ruby_cms/admin_page_generator.rb', line 33 def create_view template "index.html.erb.tt", File.join("app/views/admin", file_name, "index.html.erb") end |
#show_next_steps ⇒ Object
82 83 84 85 |
# File 'lib/generators/ruby_cms/admin_page_generator.rb', line 82 def show_next_steps say "\nAdmin page '#{file_name}' created.", :green say "Next: rails ruby_cms:seed_permissions", :cyan end |
#validate_options ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/generators/ruby_cms/admin_page_generator.rb', line 18 def raise ArgumentError, "--section must be 'main' or 'settings', got '#{section_name}'" unless %w[main settings].include?(section_name) icon_sym = icon_name.to_sym return if RubyCms::Icons::REGISTRY.key?(icon_sym) say "Warning: icon '#{icon_name}' is not in RubyCms::Icons::REGISTRY. " \ "Available: #{RubyCms::Icons.available.join(', ')}", :yellow end |