Sha256: a9a11556f7155c811c362b9ab274d0d44a710964d6807cde5e7d559a74be3679

Contents?: true

Size: 1.08 KB

Versions: 13

Compression:

Stored size: 1.08 KB

Contents

require 'set'
require 'yaml'
require 'dply/helper'

module Dply
  class PkgsConfig

    include Helper

    def initialize(pkgs_yml = nil, build_mode: false)
      @pkgs_yml = pkgs_yml || "pkgs.yml"
      @build_mode = build_mode
      @pkgs = Set.new
    end

    def pkgs
      populate_all if not @populated
      @pkgs
    end

    private

    def config
      @config ||= load_yml
    end

    def load_yml
      if not File.readable? @pkgs_yml
        logger.debug "skipping yum pkgs"
        return {}
      end
      YAML.safe_load(File.read(@pkgs_yml))
    rescue => e
      error "error loading pkgs list" 
    end

    def populate_all
      populate :pkgs
      populate :build_pkgs if @build_mode
      @populated = true
    end

    def populate(pkg_set)
      list = config[pkg_set.to_s] || []
      list.each { |x| add x }
    end 
      
    def add(pkg)
      pkg = pkg.strip
      validate! pkg
      @pkgs << pkg
    end

    def validate!(pkg)
      msg = "invalid pkg name #{pkg}"
      error msg if pkg =~ /\.rpm\z/i
      error msg if pkg =~/\A[A-Za-z_0-9\.\-]\z/
    end

  end
end


Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
dply-0.1.13 lib/dply/pkgs_config.rb
dply-0.1.12 lib/dply/pkgs_config.rb
dply-0.1.11 lib/dply/pkgs_config.rb
dply-0.1.10 lib/dply/pkgs_config.rb
dply-0.1.9 lib/dply/pkgs_config.rb
dply-0.1.8 lib/dply/pkgs_config.rb
dply-0.1.7 lib/dply/pkgs_config.rb
dply-0.1.6 lib/dply/pkgs_config.rb
dply-0.1.5 lib/dply/pkgs_config.rb
dply-0.1.4 lib/dply/pkgs_config.rb
dply-0.1.2 lib/dply/pkgs_config.rb
dply-0.1.1 lib/dply/pkgs_config.rb
dply-0.1.0 lib/dply/pkgs_config.rb