Sha256: a9b55bd0dee803fc62803abb241789d4fc21effe98486696efbac752bd6d4adb

Contents?: true

Size: 1.65 KB

Versions: 5

Compression:

Stored size: 1.65 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
      super
      @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

5 entries across 5 versions & 1 rubygems

Version Path
jackhammer-1.5.1 lib/jackhammer/rake_task.rb
jackhammer-1.5.0 lib/jackhammer/rake_task.rb
jackhammer-1.5.0.rc lib/jackhammer/rake_task.rb
jackhammer-1.4.0 lib/jackhammer/rake_task.rb
jackhammer-1.3.7 lib/jackhammer/rake_task.rb