rootstrap/rsgem

View on GitHub
lib/rsgem/dependencies/base.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module RSGem
  module Dependencies
    class Base
      attr_reader :config_file_destination, :config_file_source, :mode, :name, :post_install_task,
                  :version

      def initialize(name:, **args)
        @config_file_source = args[:config_file_source]
        @config_file_destination = args[:config_file_destination]
        @mode = args[:mode] || 'development' # Either `development' or `runtime'
        @name = name
        @post_install_task = args[:post_install_task]
        version = args[:version]
        @version = version ? "'#{version}'" : nil
      end

      def install(context)
        if config_file_source
          File.open("#{context.folder_path}/#{config_file_destination}", 'w') do |file|
            file.puts config_file_source_content
          end
        end

        post_install_task&.new(context: context)&.perform
      end

      private

      def config_file_source_content
        File.read(config_file_source)
      end
    end
  end
end