Sha256: 814d99011d3dd86bf2ef0e11318c23694034f78ffa18307fc03a47d3f068d704

Contents?: true

Size: 1.27 KB

Versions: 63

Compression:

Stored size: 1.27 KB

Contents

module Terraspace::Hooks
  class Runner
    include Terraspace::Util

    # exposing mod and hook so terraspace hooks have access to them via runner context. IE:
    #
    #     class EnvExporter
    #       def call(runner)
    #         puts "runner.hook #{runner.hook}"
    #       end
    #     end
    #
    # Docs: http://terraspace.cloud/docs/config/hooks/ruby/#method-argument
    #
    attr_reader :mod, :hook
    def initialize(mod, hook)
      @mod, @hook = mod, hook
      @execute = @hook["execute"]
    end

    def run
      case @execute
      when String
        Terraspace::Shell.new(@mod, @execute, exit_on_fail: @hook["exit_on_fail"]).run
      when -> (e) { e.respond_to?(:public_instance_methods) && e.public_instance_methods.include?(:call) }
        executor = @execute.new
      when -> (e) { e.respond_to?(:call) }
        executor = @execute
      else
        logger.warn "WARN: execute option not set for hook: #{@hook.inspect}"
      end

      return unless executor

      meth = executor.method(:call)
      case meth.arity
      when 0
        executor.call # backwards compatibility
      when 1
        executor.call(self)
      else
        raise "The #{executor} call method definition has been more than 1 arguments and is not supported"
      end
    end
  end
end

Version data entries

63 entries across 63 versions & 1 rubygems

Version Path
terraspace-2.1.5 lib/terraspace/hooks/runner.rb
terraspace-2.1.4 lib/terraspace/hooks/runner.rb
terraspace-2.1.3 lib/terraspace/hooks/runner.rb
terraspace-2.1.2 lib/terraspace/hooks/runner.rb
terraspace-2.1.1 lib/terraspace/hooks/runner.rb
terraspace-2.1.0 lib/terraspace/hooks/runner.rb
terraspace-2.0.3 lib/terraspace/hooks/runner.rb
terraspace-2.0.2 lib/terraspace/hooks/runner.rb
terraspace-2.0.1 lib/terraspace/hooks/runner.rb
terraspace-2.0.0 lib/terraspace/hooks/runner.rb
terraspace-1.1.7 lib/terraspace/hooks/runner.rb
terraspace-1.1.6 lib/terraspace/hooks/runner.rb
terraspace-1.1.5 lib/terraspace/hooks/runner.rb
terraspace-1.1.4 lib/terraspace/hooks/runner.rb
terraspace-1.1.3 lib/terraspace/hooks/runner.rb
terraspace-1.1.2 lib/terraspace/hooks/runner.rb
terraspace-1.1.1 lib/terraspace/hooks/runner.rb
terraspace-1.1.0 lib/terraspace/hooks/runner.rb
terraspace-1.0.6 lib/terraspace/hooks/runner.rb
terraspace-1.0.5 lib/terraspace/hooks/runner.rb