module Stubify

Constants

DESCRIPTION
VERSION

Attributes

options[RW]

Public Class Methods

parse_whitelist(file_path) click to toggle source
# File lib/stubify.rb, line 51
def parse_whitelist(file_path)
  require 'yaml'
  return [] unless !file_path.nil? && Pathname.new(file_path).file?
  return YAML.load_file(file_path)
end
run() click to toggle source
# File lib/stubify.rb, line 11
def run
  program :name, 'stubify'
  program :version, Stubify::VERSION
  program :description, Stubify::DESCRIPTION
  program :help, 'Author', 'Carlos Vidal <nakioparkour@gmail.com>'

  command :server do |c|
    c.syntax = 'server [options]'
    c.description = 'Runs a local environment that will forward the requests received to the host provided. Responses will be cached'
    c.option '--host STRING', String, 'Host the requests will be redirected to. i.e. https://easy-peasy.io'
    c.option '--port STRING', String, 'Port the local environment will listen to. Default is 4567'
    c.option '--directory DIR', String, 'Path where fixtures will be stored. i.e. fixtures/'
    c.option '--whitelist DIR', String, 'Path to the .yaml file with the whitelisted paths'
    c.option '--verbose', 'Increases the amount of information logged'
    c.action do |args, options|
      # Ensure host is set
      if options.host.nil?
        raise 'Host must be provided. Run help command for more details'
      end

      # Default options
      options.default \
        port: '4567',
        directory: 'fixtures',
        verbose: false,
        whitelisted: parse_whitelist(options.whitelist)

      # Set env variables
      ENV['PORT'] = options.port

      # Set options global attr
      Stubify.options = options

      # Launch Sinatra app
      require 'stubify/server'
    end
  end
  run!
end