Sha256: afc92d6a5c7568e51ad4a69d36af554881d9cd2e810fbc8eb0c976cc7c69bb5a

Contents?: true

Size: 1016 Bytes

Versions: 2

Compression:

Stored size: 1016 Bytes

Contents

# frozen_string_literal: true

require "refinements/struct"

module Hanamismith
  module Builders
    # Builds project skeleton console for object inspection and exploration.
    class Console < Rubysmith::Builders::Console
      using Refinements::Struct

      def call
        return configuration unless configuration.build_console

        super
        builder.call(configuration.merge(template_path: "%project_name%/bin/console.erb"))
               .replace(/require Bundler.root.+/, %(require "hanami/prepare"))

        add_irb_autocomplete

        configuration
      end

      private

      def add_irb_autocomplete
        with_template.insert_before "IRB.start", <<~CODE
          unless Hanami.env? :development, :test
            ENV["IRB_USE_AUTOCOMPLETE"] ||= "false"
            puts "IRB autocomplete disabled."
          end

        CODE
      end

      def with_template
        builder.call configuration.merge(template_path: "%project_name%/bin/console.erb")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hanamismith-0.38.0 lib/hanamismith/builders/console.rb
hanamismith-0.37.0 lib/hanamismith/builders/console.rb