Sha256: a745c1728aa7ed0c6ec15bb8515092f360fcccf7ea983f631ac6b479e0cd2687
Contents?: true
Size: 1.63 KB
Versions: 208
Compression:
Stored size: 1.63 KB
Contents
require "fileutils" require_relative "base_generator" module Generators module Avo class ToolGenerator < BaseGenerator source_root File.expand_path("templates", __dir__) argument :name, type: :string, required: true namespace "avo:tool" def handle # Sidebar items template "tool/sidebar_item.tt", "app/views/avo/sidebar/items/_#{file_name}.html.erb" # Add controller if it doesn't exist controller_path = "app/controllers/avo/tools_controller.rb" unless File.file?(Rails.root.join(controller_path)) template "tool/controller.tt", controller_path end # Add controller method inject_into_class controller_path, "Avo::ToolsController" do <<-METHOD def #{file_name} @page_title = "#{human_name}" add_breadcrumb "#{human_name}" end METHOD end # Add view file template "tool/view.tt", "app/views/avo/tools/#{file_name}.html.erb" if ::Avo.configuration.root_path == "" route <<-ROUTE get "#{file_name}", to: "avo/tools##{file_name}" ROUTE else route <<-ROUTE scope :#{::Avo.configuration.namespace} do get "#{file_name}", to: "avo/tools##{file_name}" end ROUTE end end no_tasks do def file_name name.to_s.underscore end def controller_name file_name.to_s end def human_name file_name.humanize end def in_code(text) "<code class='p-1 rounded bg-gray-500 text-white text-sm'>#{text}</code>" end end end end end
Version data entries
208 entries across 208 versions & 1 rubygems