module Flextures::ARGS

parse arguments functions.

Public Class Methods

exist() click to toggle source

check exist filename block

# File lib/flextures/flextures.rb, line 129
def self.exist
  return ->(name) {
    File.exist?(File.join(Flextures::Configuration.load_directory, "#{name}.csv")) or
    File.exist?(File.join(Flextures::Configuration.load_directory, "#{name}.yml"))
  }
end
parse(env={}, option={}) click to toggle source

parse rake ENV parameters

# File lib/flextures/flextures.rb, line 84
def self.parse(env={}, option={})
  table_names = []
  if v = (env["T"] or env["TABLE"])
    table_names = v.split(',').map{ |name| { table: name, file: name } }
  end
  if v = (env["M"] or env["MODEL"])
    table_names = v.split(',').map do |name|
      name = name.constantize.table_name
      { table: name, file: name }
    end
  end

  table_names = Flextures::deletable_tables.map{ |name| { table: name, file: name } } if table_names.empty?

  # parse env["FIXTURES"] parameter
  fixtures_args_parser = ->(s){
    names = s.split(',')
    if env["TABLE"] or env["T"] or env["MODEL"] or env["M"]
      [ table_names.first.merge(file: names.first) ]
    else
      names.map{ |name| { table: name, file: name } }
    end
  }
  # parse filename and define parameters.
  table_names = fixtures_args_parser.call(env["FIXTURES"]) if env["FIXTURES"]
  table_names = fixtures_args_parser.call(env["FILE"])     if env["FILE"]
  table_names = fixtures_args_parser.call(env["F"])        if env["F"]

  table_names = table_names.map{ |option| option.merge(dir: env["DIR"]) } if env["DIR"]
  table_names = table_names.map{ |option| option.merge(dir: env["D"])   } if env["D"]

  table_names = table_names.map{ |option| option.merge(minus: env["MINUS"].to_s.split(",")) } if env["MINUS"]
  table_names = table_names.map{ |option| option.merge(plus:  env["PLUS"].to_s.split(","))  } if env["PLUS"]

  table_names = table_names.map{ |option| option.merge(silent: true) }   if env["OPTION"].to_s.split(",").include?("silent")
  table_names = table_names.map{ |option| option.merge(unfilter: true) } if env["OPTION"].to_s.split(",").include?("unfilter")
  table_names = table_names.map{ |option| option.merge(strict: true) }   if env["OPTION"].to_s.split(",").include?("strict")
  table_names = table_names.map{ |option| option.merge(stair: true) }    if env["OPTION"].to_s.split(",").include?("stair")

  # if mode is 'read mode' and file is not exist, value is not return.
  table_names.select!(&exist) if option[:mode] && option[:mode] == 'read'
  table_names
end