Sha256: 37ee21ee287d753f39755367c9f33df6dabb4dcf6665345276f7051beaae3d94

Contents?: true

Size: 969 Bytes

Versions: 2

Compression:

Stored size: 969 Bytes

Contents

require 'dply/helper'
require 'yaml'

module Dply
  class Yum

    include Helper

    def initialize(pkgs_yml)
      @pkgs_yml = pkgs_yml
    end

    def pkgs
      @pkgs ||= load_pkgs
    end

    def install
      return if installed?
      cmd "sudo -n yum install -y #{not_installed_pkgs.join(' ')}"
    end

    private

    def pkgs_str
      pkgs.join " "
    end

    def not_installed_pkgs
      @not_installed_pkgs ||= query_not_installed
    end

    def query_not_installed
      return [] if pkgs_str.strip.empty?
      command = "rpm -V --noscripts --nodeps --nofiles #{pkgs_str}"
      matches = `#{command}`.scan(/^package (.*) is not installed$/)
    end

    def installed?
      not_installed_pkgs.size == 0
    end

    def load_pkgs
      if not File.readable? @pkgs_yml
        logger.debug "skipping yum pkgs"
        return []
      end
      YAML.load_file(@pkgs_yml)
    rescue => e
      error "error loading pkgs list" 
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dply-0.0.8 lib/dply/yum.rb
dply-0.0.7 lib/dply/yum.rb