Sha256: 8682a94bdb684c16853a9a2fb9f1ef091c4a767d8b18e961bea448a9b0e45e1e

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

require 'yaml'
require 'time'
require 'digest'

module Reaver
  class Collection
    attr_reader :tasks

    def initialize(file)
      @file = file
      @changed = false
    end

    def load_yaml
      puts ">> Loading #{@file}..."
      if RUBY_VERSION >= '3.0'
        @tasks = YAML.load_file(@file,  permitted_classes: [Time, Symbol])
      else
        @tasks = YAML.load_file(@file)
      end
    rescue => error
      raise error, "loading YAML fail for #{@file}: #{error.message}"
    end

    def launch(metadata)
      return unless @tasks

      if @tasks['things'].length >= 1
        @tasks['things'].each do |t|
          if File.exist? t['name']
            old_hash = Digest::MD5.file t['name']
          else
            @changed = true
          end

          Reaver.download(t['url'], t['name']) 
          compare_hash(t['name'], old_hash) if old_hash

          metadata.info['changed'] = @changed
        end
      end
    end

    private

    def compare_hash(filename, old_hash)
      hash = Digest::MD5.file filename
      @changed = true if old_hash.hexdigest != hash.hexdigest
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reaver-0.7.1 lib/reaver/collection.rb