Class: Hanami::CLI::Generators::App::Slice Private

Inherits:
Object
  • Object
show all
Defined in:
lib/hanami/cli/generators/app/slice.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0

Instance Method Summary collapse

Constructor Details

#initialize(fs:, inflector:) ⇒ Slice

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Slice.

Since:

  • 2.0.0



15
16
17
18
# File 'lib/hanami/cli/generators/app/slice.rb', line 15

def initialize(fs:, inflector:)
  @fs = fs
  @inflector = inflector
end

Instance Method Details

#call(app, slice, url, context: SliceContext.new(inflector, app, slice, url)) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 2.0.0



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/hanami/cli/generators/app/slice.rb', line 22

def call(app, slice, url, context: SliceContext.new(inflector, app, slice, url)) # rubocop:disable Metrics/AbcSize
  fs.inject_line_at_class_bottom(
    fs.join("config", "routes.rb"), "class Routes", t("routes.erb", context).chomp
  )

  fs.mkdir(directory = "slices/#{slice}")

  # fs.write("#{directory}/config/slice.rb", t("slice.erb", context))
  fs.write(fs.join(directory, "action.rb"), t("action.erb", context))
  fs.write(fs.join(directory, "view.rb"), t("view.erb", context))
  fs.write(fs.join(directory, "views", "helpers.rb"), t("helpers.erb", context))
  fs.write(fs.join(directory, "templates", "layouts", "app.html.erb"), t("app_layout.erb", context))

  if context.bundled_assets?
    fs.write(fs.join(directory, "assets", "js", "app.js"), t("app_js.erb", context))
    fs.write(fs.join(directory, "assets", "css", "app.css"), t("app_css.erb", context))
    fs.write(fs.join(directory, "assets", "images", "favicon.ico"), file("favicon.ico"))
  end

  # fs.write(fs.join(directory, "/entities.rb"), t("entities.erb", context))
  # fs.write(fs.join(directory, "/repository.rb"), t("repository.erb", context))

  fs.write(fs.join(directory, "actions/.keep"), t("keep.erb", context))
  fs.write(fs.join(directory, "views/.keep"), t("keep.erb", context))
  fs.write(fs.join(directory, "templates/.keep"), t("keep.erb", context))
  fs.write(fs.join(directory, "templates/layouts/.keep"), t("keep.erb", context))
  # fs.write(fs.join(directory, entities/.keep"), t("keep.erb", context))
  # fs.write(fs.join(directory, repositories/.keep"), t("keep.erb", context))
end