Sha256: 3c402ee1fc8a14196293def9eb8aa05d5ee728796116b8760366c14dce6a6503
Contents?: true
Size: 1.66 KB
Versions: 2
Compression:
Stored size: 1.66 KB
Contents
require 'lightchef' module Lightchef module Resources class Base attr_reader :options def initialize(recipe, name, &block) @options = {} @recipe = recipe instance_eval(&block) if block_given? end def run action = fetch_option(:action) public_send("#{action}_action".to_sym) end def fetch_option(key) @options.fetch(key) do |k| raise Error, "#{k} is not specified." end end def method_missing(method, *args) if args.size == 1 @options[method] = args.first return end super end def run_command(type, *args) command = backend.commands.public_send(type, *args) result = backend.run_command(command) exit_status = result[:exit_status] if exit_status == 0 Logger.debug "Command `#{command}` succeeded" Logger.debug "STDOUT> #{(result[:stdout] || "").chomp}" Logger.debug "STDERR> #{(result[:stderr] || "").chomp}" else Logger.error "Command `#{command}` failed. (exit status: #{exit_status})" Logger.error "STDOUT> #{(result[:stdout] || "").chomp}" Logger.error "STDERR> #{(result[:stderr] || "").chomp}" raise CommandExecutionError end end def copy_file(src, dst) Logger.debug "Copying a file from '#{src}' to '#{dst}'..." backend.copy_file(src, dst) end def node current_runner.node end private def backend current_runner.backend end def current_runner @recipe.current_runner end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lightchef-0.0.2 | lib/lightchef/resources/base.rb |
lightchef-0.0.1 | lib/lightchef/resources/base.rb |