Sha256: 7c01f6e2672d0279ecf1960a42c7e3178a3c12bfbc5f8364b0e49175140a7973

Contents?: true

Size: 1.64 KB

Versions: 1

Compression:

Stored size: 1.64 KB

Contents

require 'rake'
require 'rake/tasklib'
require 'yaml'
require 'jackhammer/configuration_validator'

module Jackhammer
  class RakeTask < ::Rake::TaskLib
    # Name of test task. (default is :jackhammer)
    attr_accessor :name

    # File path of the configuration file. (default is ./config/jackhammer.yml)
    attr_accessor :path

    # Description of the test task. (default is 'Validate Jackhammer
    # configuration')
    attr_accessor :description

    # Task prerequisites.
    attr_accessor :deps

    # Specifies the environment to inspect. (default is 'production')
    attr_accessor :env

    def initialize
      @name = :jackhammer
      @env = 'production'
      @path = './config/jackhammer.yml'
      @description = 'Validate Jackhammer configuration'
      @deps = []
      yield self if block_given?
      if @name.is_a?(Hash)
        @deps = @name.values.first
        @name = @name.keys.first
      end
      define
    end

    def define
      desc @description
      task @name => Array(deps) do
        validator = ConfigurationValidator.new
        validator.config_yaml = YAML.safe_load(File.read(@path), [], [], true)
        validator.environment = env
        validator.validate
        print_results validator.errors
      end
    end

    private

    def print_results(errors)
      puts "Jackhammer configuration #{path}\n"
      if errors.any?
        puts red("Problems identified: #{errors.size}\n")
        errors.each { |error| puts red(error) }
        exit 1
      else
        puts green('OK')
      end
    end

    def red(text)
      "\e[1;31m#{text}\e[0m"
    end

    def green(text)
      "\e[1;32m#{text}\e[0m"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jackhammer-1.3.6 lib/jackhammer/rake_task.rb