Sha256: cb177cf917430cf64a0cf03c8bee9b5357e37dc74e32aeab0f85ca62792c3905

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 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 short_appname
        app_name.sub(/plug-/i, "")
      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.1.2 lib/hephaestus/generators/base.rb
hephaestus-0.1.1 lib/hephaestus/generators/base.rb