Sha256: 108572c2fb8d8a7f0eba973ca79fb7fb85eae43becee172614db05b9ed08a29e

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

module Divvy
  class PackageRunner
    def initialize(server, package)
      @server, @package = server, package
    end
    
    attr_reader :server, :package
    
    def run(command, options = {})
      server.remote_command(command, options)
    end
    
    def scp(source, destination, options = {})
      server.scp(source, destination, options)
    end
    
    def process
      puts "==> Processing #{package.name}"
      
      unless package.verifications.empty?
        begin
          process_verifications(true)
          puts " --> #{package.name} already installed package: #{server.host}"
          return
        rescue Divvy::VerificationFailed => e
          # Yaay package not installed yet
        end
      end
      
      self.instance_eval(&package.apply_block) unless package.apply_block.nil?
          
      process_verifications
    end

    private
      def process_verifications(pre = false)
        return if package.verifications.empty?
        
        if pre
          puts " --> Checking if #{package.name} is already installed for server: #{server.host}"
        else
          puts " --> Verifying #{package.name} was properly installed for server: #{server.host}"
        end

        package.verifications.each do |v|
          v.verify(server)
        end
        
      end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
mdwan-divvy-0.1.0 lib/divvy/package_runner.rb
mdwan-divvy-0.1.1 lib/divvy/package_runner.rb
mdwan-divvy-0.1.2 lib/divvy/package_runner.rb
michaeldwan-divvy-0.1.2 lib/divvy/package_runner.rb
michaeldwan-divvy-0.1.5 lib/divvy/package_runner.rb