Sha256: 02da6720784c21c9b037f9b9573e8d2a7ed76495183b9ea699f2fa33048520eb

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

require "peto"
require "rake"
require "rake/tasklib"

module Peto
  class RakeTask < ::Rake::TaskLib
    attr_accessor :contracts
    attr_accessor :output_dir
    attr_accessor :languages

    attr_accessor :name
    attr_accessor :fail_on_error
    attr_accessor :failure_message

    def initialize(*args)
      @contracts ||= []
      @output_dir ||= "./"
      @languages ||= []

      @name ||= :peto
      @fail_on_error ||= true

      yield self if block_given?

      desc("Generate codes by contracts") unless ::Rake.application.last_comment

      task name do
        RakeFileUtils.send(:verbose, verbose) do
          if contracts.empty?
            puts "No contracts"
          else
            begin
              languages.each do |language|
                self.contracts = [contracts] if contracts.class == String
                contracts.each do |contract|
                  peto = Peto::Master.new
                  peto.load(contract)
                  peto.generate(language, output_dir)
                end
              end
            #rescue
            #  puts failure_message if failure_message
            #  raise "peto failed" if fail_on_error
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
peto-0.2.7 lib/peto/rake_task.rb
peto-0.2.6 lib/peto/rake_task.rb