Sha256: e6b3d21229bfccdcd3f736d85b9539efbbdcc639ee6a5231cd595604e7578a9b

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

require 'term/ansicolor'
require 'open3'
require 'Benchmark'

module RakeCheck
  module Checker
    ##
    # Abstractclass for all Checker
    class Base
      include Term::ANSIColor

      attr_reader :check_output, :time, :options, :short_message
      def initialize(options = {})
        @options = options
      end

      def status
        "(#{@time} sec): " + (success? ? "OK".green : "FAILED".red) + " " + short_message.to_s
      end

      def success?
        @status && @status.success?
      end

      # overwrite if needed
      def type
        self.class.name.split("::").last
      end

      private

      def handle_error(e)
        @status = OpenStruct.new(success?: false)
        @short_message = e.message
        @check_output = e.backtrace.unshift('Backtrace:'.bold.cyan).
          unshift("Error: ".bold.red + e.message).join("\n")
      end

      def run_command(*commands)
        @time = Benchmark.measure do
          begin
            @check_output, @status = Open3.capture2e *commands
          rescue Errno::ENOENT => e
            handle_error(e)
          end
        end.total.round(2)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rake_check-0.4.0 lib/rake_check/checker/base.rb
rake_check-0.3.6 lib/rake_check/checker/base.rb