module NeverBounce::CLI::Feature::Envars::ClassMethods

Attributes

envars[W]

Public Instance Methods

envars() click to toggle source
# File lib/never_bounce/cli/feature/envars.rb, line 19
def envars
  @envars ||= if superclass.respond_to? :envars
    superclass.envars.dup
  else
    []
  end
end

Private Instance Methods

define_envar(name, comment, is_mandatory: false, examples: [], default: nil) click to toggle source

Define an envar in a formal way. @param name [String] @param comment [String] @return [Item]

# File lib/never_bounce/cli/feature/envars.rb, line 34
def define_envar(name, comment, is_mandatory: false, examples: [], default: nil)
  Item.new({
    name: name,

    comment: comment,
    default: default,
    examples: examples,
    is_mandatory: is_mandatory,
  }).tap { |_| envars << _ }
end
envar(name, comment, examples = []) click to toggle source

Declare an envar in a concise and magical way.

envar "ID", "Job ID"
=> define_envar "ID", "Job ID"
envar "API_KEY*", "API key", ["2ed45186c72f9319dc64338cdf16ab76b44cf3d1"]
# => define_envar "API_KEY", "API key", is_mandatory: true, examples: [...]
envar "RAW", "Print raw response body", ["y", default: "N"]
# => define_envar "RAW", "Print raw response body", examples: ["y", "N"], default: "N"
# File lib/never_bounce/cli/feature/envars.rb, line 53
def envar(name, comment, examples = [])
  options = {}

  real_name = if name[-1] == "*"
    options[:is_mandatory] = true
    name[0..-2]
  else
    name
  end

  if not examples.empty?
    h = ExamplesMapper.new[examples]
    options[:examples] = h[:values]
    options[:default] = h[:default] if h.include?(:default)
  end

  define_envar(real_name, comment, options)
end