Class: Pfm::Command::Validate

Inherits:
Base
  • Object
show all
Defined in:
lib/iapi-idlc-sdk-pfm/command/validate.rb

Defined Under Namespace

Classes: ValidatorCommand

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#build_base_dir, #build_dir, #build_exists?, #build_setup, #deploy_setup, #deploy_setupv2, #inf_base_dir, #needs_version?, #run_with_default_options, #templates_dir, #verbose?

Methods included from Helpers

debug, err, msg, system_command

Constructor Details

#initialize(*args) ⇒ Validate

pfm validate app path/to/basename –skel=path/to/skeleton –example pfm validate file name [path/to/cookbook_root] (inferred from cwd) –from=source_file



43
44
45
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 43

def initialize(*args)
  super
end

Class Method Details



36
37
38
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 36

def self.banner
  banner_headline + validator_list + "\n"
end


24
25
26
27
28
29
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 24

def self.banner_headline
  <<-E
Usage: pfm validate VALIDATOR [options]
Available validators:
E
end

.validator(name, class_name, description) ⇒ Object



17
18
19
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 17

def self.validator(name, class_name, description)
  validators << ValidatorCommand.new(name, class_name, description)
end

.validator_listObject



31
32
33
34
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 31

def self.validator_list
  justify_size = validators.map { |g| g.name.size }.max + 2
  validators.map { |g| "  #{g.name.to_s.ljust(justify_size)}#{g.description}" }.join("\n")
end

.validatorsObject



13
14
15
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 13

def self.validators
  @validators ||= []
end

Instance Method Details

#have_validator?(name) ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 79

def have_validator?(name)
  self.class.validators.map { |g| g.name.to_s }.include?(name)
end

#needs_help?(params) ⇒ Boolean

In the Base class, this is defined to be true if any args match “-h” or “–help”. Here we override that behavior such that if the first argument is a valid validator name, like ‘pfm validate server-build -h`, we delegate the request to the specified validator.

Returns:

  • (Boolean)


74
75
76
77
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 74

def needs_help?(params)
  return false if have_validator?(params[0])
  super
end

#run(params) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 47

def run(params)
  if validator_spec = validator_for(params[0])
    params.shift
    validator = ValidatorCommands.build(validator_spec.class_name, params)
    validator.run
  else
    msg(banner)
    1
  end
rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e
  # Pfm::Command::Base also handles this error in the same way, but it
  # does not have access to the correct option parser, so it cannot print
  # the usage correctly. Therefore, invalid CLI usage needs to be handled
  # here.
  err("ERROR: #{e.message}\n")
  msg(validator.opt_parser)
  1
end

#validator_for(arg) ⇒ Object



66
67
68
# File 'lib/iapi-idlc-sdk-pfm/command/validate.rb', line 66

def validator_for(arg)
  self.class.validators.find { |g| g.name.to_s == arg }
end