Sha256: 29c84d1c1f728e625d4f5dd0d53fad346299de2211574515bf013127474ba0fa

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require 'open3'

require_relative 'command_runner'
require_relative 'engine_package'
require_relative 'package_manager_factory'

module EnginePack
  class Preinstall
    ENV_VARIABLE_NAME = 'EP_PREINSTALL'

    class << self
      def call(engines:)
        new.call(engines: engines)
      end
    end

    def initialize(
      command_runner: CommandRunner.new,
      package_manager: PackageManagerFactory.build(EnginePack.config.package_manager)
    )
      @command_runner = command_runner
      @package_manager = package_manager
    end

    def call(engines:)
      return if ENV.fetch(ENV_VARIABLE_NAME, nil)

      engines.each(&method(:install_engine))
    end

    private

    attr_reader :command_runner, :package_manager

    def install_engine(engine)
      engine_package = EnginePackage.new(engine)

      engine_package.with_path do |path|
        command_runner.run(
          package_manager.install_command(path),
          { ENV_VARIABLE_NAME => '1' }
        )
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
engine_pack-0.2.0 lib/engine_pack/preinstall.rb
engine_pack-0.1.0 lib/engine_pack/preinstall.rb