Sha256: adca3bfb4bbfb7626436dd83ca8d11655a686ab2b0f11b27a6491df36ab625c5

Contents?: true

Size: 1.02 KB

Versions: 159

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require 'avm/source_generators/option_list'
require 'avm/with/application_stereotype'
require 'eac_ruby_utils/core_ext'

module Avm
  module SourceGenerators
    class Base
      include ::Avm::With::ApplicationStereotype

      class << self
        # @return [Avm::SourceGenerators::OptionList]
        def option_list
          Avm::SourceGenerators::OptionList.new
        end
      end

      common_constructor :target_path, :options, default: [{}] do
        self.target_path = target_path.to_pathname
        self.options = option_list.validate(options)
      end

      # @return [Avm::SourceGenerators::OptionList]
      def option_list
        self.class.option_list
      end

      def perform
        assert_clear_directory
        apply_template
      end

      def assert_clear_directory
        target_path.mkpath
        raise "\"#{target_path}\" is not empty" if target_path.children.any?
      end

      def apply_template
        template.apply(self, target_path)
      end
    end
  end
end

Version data entries

159 entries across 159 versions & 2 rubygems

Version Path
avm-0.83.0 lib/avm/source_generators/base.rb
eac_tools-0.82.0 sub/avm/lib/avm/source_generators/base.rb
avm-0.82.0 lib/avm/source_generators/base.rb
eac_tools-0.81.0 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.80.0 sub/avm/lib/avm/source_generators/base.rb
avm-0.81.0 lib/avm/source_generators/base.rb
eac_tools-0.79.0 sub/avm/lib/avm/source_generators/base.rb
avm-0.80.0 lib/avm/source_generators/base.rb
eac_tools-0.78.0 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.77.1 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.77.0 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.76.1 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.76.0 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.75.2 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.75.1 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.75.0 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.74.1 sub/avm/lib/avm/source_generators/base.rb
eac_tools-0.74.0 sub/avm/lib/avm/source_generators/base.rb
avm-0.79.0 lib/avm/source_generators/base.rb
eac_tools-0.73.0 sub/avm/lib/avm/source_generators/base.rb