Sha256: 88929f1b4514c9b0b48dfea87e1f006f30c55b6c99a7d32a2eab237134bc2eef

Contents?: true

Size: 1.22 KB

Versions: 3

Compression:

Stored size: 1.22 KB

Contents

require "colorize"
require "rambo"

module Rambo
  class CLI
    def initialize(raml_file=nil, opts={}, stdout=STDOUT, stderr=STDERR)
      @stdout  = stdout
      @stderr  = stderr
      @file    = raml_file
      @options = opts

      validate!
    end

    def run!
      print_logo

      begin
        Rambo.generate_contract_tests!(file, options)

        stdout.puts("Generating contract tests...")
        sleep 0.4

        stdout.puts("Done!".green)
      rescue NoMethodError => e
        stderr.puts("Error: #{e.message}".red)
        stderr.puts "\t#{e.backtrace.join("\n\t")}"
      end
    end

    def validate!
      exit_for_missing_file unless file
      exit_for_invalid_file_format unless file.match(/\.raml$/)
    end

    private

    attr_accessor :file, :stdout, :stderr, :generator, :options

    def print_logo
      stdout.puts logo.colorize(color: String.colors.sample)
      sleep 0.4
    end

    def exit_for_missing_file
      stdout.puts "USAGE: rambo [FILE]"
      exit 1
    end

    def exit_for_invalid_file_format
      stdout.puts "Unsupported file format. Please choose a RAML file."
      exit 1
    end

    def logo
      File.read(File.expand_path("../../assets/logo.txt", __FILE__))
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rambo_ruby-0.2.3 lib/cli.rb
rambo_ruby-0.2.2 lib/cli.rb
rambo_ruby-0.2.1 lib/cli.rb