Sha256: 15acf84603534df0eaa1dab28fc8cd960d240c0781d77d3629a26738199b37ec

Contents?: true

Size: 1.02 KB

Versions: 113

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'minitar'

module Avm
  module Data
    class Package
      class Load
        enable_console_speaker

        attr_reader :package, :data_file_path

        def initialize(package, data_file_path)
          @package = package
          @data_file_path = data_file_path
        end

        def runnable?
          cannot_run_reason.blank?
        end

        def cannot_run_reason
          return nil if data_file_exist?

          "Data file \"#{data_file_path}\" does not exist"
        end

        def run
          raise "Cannot run: #{cannot_run_reason}" unless runnable?

          build_dir = extract_packages_to_build_directory
          package.load_units_from_directory(build_dir)
        end

        def data_file_exist?
          ::File.exist?(data_file_path)
        end

        def extract_packages_to_build_directory
          dir = ::Dir.mktmpdir
          ::Minitar.unpack(data_file_path, dir)
          dir
        end
      end
    end
  end
end

Version data entries

113 entries across 113 versions & 1 rubygems

Version Path
avm-tools-0.43.0 lib/avm/data/package/load.rb
avm-tools-0.42.0 lib/avm/data/package/load.rb
avm-tools-0.41.0 lib/avm/data/package/load.rb
avm-tools-0.40.0 lib/avm/data/package/load.rb
avm-tools-0.39.0 lib/avm/data/package/load.rb
avm-tools-0.38.0 lib/avm/data/package/load.rb
avm-tools-0.37.1 lib/avm/data/package/load.rb
avm-tools-0.37.0 lib/avm/data/package/load.rb
avm-tools-0.36.0 lib/avm/data/package/load.rb
avm-tools-0.35.0 lib/avm/data/package/load.rb
avm-tools-0.34.0 lib/avm/data/package/load.rb
avm-tools-0.33.1 lib/avm/data/package/load.rb
avm-tools-0.33.0 lib/avm/data/package/load.rb
avm-tools-0.32.0 lib/avm/data/package/load.rb
avm-tools-0.31.0 lib/avm/data/package/load.rb
avm-tools-0.30.0 lib/avm/data/package/load.rb
avm-tools-0.28.0 lib/avm/data/package/load.rb
avm-tools-0.27.0 lib/avm/data/package/load.rb
avm-tools-0.26.0 lib/avm/data/package/load.rb
avm-tools-0.25.0 lib/avm/data/package/load.rb