Sha256: 3db088115f9814c46386d287c7c95364a05f81a1f53e1d767d2eb785cef3a342

Contents?: true

Size: 1.73 KB

Versions: 2

Compression:

Stored size: 1.73 KB

Contents

# typed: false
# frozen_string_literal: true

require "rails/generators"
require_relative "../actions"

module Hephaestus
  module Generators
    class Base < Rails::Generators::Base
      include Hephaestus::Actions
      include ExitOnFailure

      class << self
        def default_source_root
          File.expand_path(File.join("..", "..", "..", "templates"), __dir__)
        end

        def inherited(subclass)
          super

          description_file = File.expand_path(
            File.join(
              default_source_root,
              "descriptions",
              "#{subclass.generator_name}.md",
            ),
          )

          subclass.desc(File.read(description_file))
        rescue Errno::ENOENT # rubocop:disable Lint/SuppressedException
        end
      end

      private

      def app_name
        Rails.app_class.module_parent_name.demodulize.underscore.dasherize
      end

      def empty_directory_with_keep_file(destination)
        empty_directory(destination, {})
        keep_file(destination)
      end

      def keep_file(destination)
        create_file(File.join(destination, ".keep"))
      end

      def append_template_to_file(destination, source, *args)
        partial = File.expand_path(find_in_source_paths(source))
        append_to_file(destination, File.read(partial, *args))
      end

      def prepend_template_to_file(destination, source, *args)
        partial = File.expand_path(find_in_source_paths(source))
        prepend_to_file(destination, File.read(partial, *args))
      end

      def inject_template_into_file(destination, source, *args)
        partial = File.expand_path(find_in_source_paths(source))
        inject_into_file(destination, File.read(partial), *args)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hephaestus-0.0.2 lib/hephaestus/generators/base.rb
hephaestus-0.0.1 lib/hephaestus/generators/base.rb