Class: Koi::AdminRouteGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Helpers::AttributeHelpers, Helpers::ResourceHelpers
Defined in:
lib/generators/koi/admin_route/admin_route_generator.rb

Instance Method Summary collapse

Methods included from Helpers::AttributeHelpers

#collection_attribute_for, #default_sort_attribute, #govuk_input_for, #index_attribute_for, #index_attributes, #show_attribute_for, #show_attributes

Instance Method Details

#add_navigationObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/generators/koi/admin_route/admin_route_generator.rb', line 46

def add_navigation
  gsub_file("config/initializers/koi.rb", /Koi::Menu.modules = ({}|{\n(?:\s+.*\n)*})\n/) do |match|
    # Safe because we know that this only called during code generation
    config        = eval(match) # rubocop:disable Security/Eval
    label         = [*regular_class_path.map(&:humanize), human_name.pluralize].join(" ")
    path          = route_url
    config[label] = path
    config        = config.sort.to_h
    StringIO.new.tap do |io|
      io.puts "Koi::Menu.modules = {"
      config.each do |k, v|
        if v.is_a?(Hash)
          io.puts "  #{k.inspect} => {"
          v.each do |kk, vv|
            io.puts "    #{kk.inspect} => #{vv.inspect},"
          end
          io.puts "  },"
        else
          io.puts "  #{k.inspect} => #{v.inspect},"
        end
      end
      io.puts "}"
    end.string
  end
end

#add_routeObject



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/generators/koi/admin_route/admin_route_generator.rb', line 26

def add_route
  route "resources :#{file_name.pluralize}"

  if orderable?
    resource_route "patch :order, on: :collection"
  end

  if archivable?
    resource_route "put :restore, on: :collection"
    resource_route "put :archive, on: :collection"
    resource_route "get :archived, on: :collection"
  end
end

#create_navigationObject



40
41
42
43
44
# File 'lib/generators/koi/admin_route/admin_route_generator.rb', line 40

def create_navigation
  return if Pathname.new(destination_root).join("config/initializers/koi.rb").exist?

  template("initializer.rb", "config/initializers/koi.rb")
end

#create_routesObject



20
21
22
23
24
# File 'lib/generators/koi/admin_route/admin_route_generator.rb', line 20

def create_routes
  return if Pathname.new(destination_root).join("config/routes/admin.rb").exist?

  template("routes.rb", "config/routes/admin.rb")
end