class Pkgman::Executor

Public Class Methods

new() click to toggle source
# File lib/pkgman/executor.rb, line 13
def initialize
  @runtime = Runtime.new
end

Public Instance Methods

execute(descriptor) click to toggle source
# File lib/pkgman/executor.rb, line 17
def execute(descriptor)
  descriptor['builds'].each do |build|
    build['targets'].each do |target|
      target = Target.new(@runtime, target)
      case build['from']
      when 'source'
        strategy = Builds::Source.new(build, target)
        strategy.start
      else
        puts "Unknown build strategy #{build['from']}"
      end

      target.target['package'].each do |package|
        case package['type']
        when 'rpm'
          pkg = Packages::Rpm.new(strategy, package, target)
          pkg.start

          package['push'].each do |push|
            repository = descriptor['repositories'][push]
            case repository['type']
            when 'local'
              repo = Pkgman::Repositories::Local.new(target, repository, pkg)
              repo.execute
            when 'packagecloud'
              repo = Pkgman::Repositories::PackageCloud.new(target, repository, pkg)
              repo.execute
            when 'cloudsmith'
              repo = Pkgman::Repositories::CloudSmith.new(target, repository, pkg)
              repo.execute
            end
          end
        else
          puts "Unknown package strategy #{package['type']}"
        end
      end

      target.destroy
    end

  end
end