zertico/puppi

View on GitHub
bin/puppi

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby

require "optparse"
require 'puppi'
Puppi::initial_checks

begin
  options = Hash.new
  OptionParser.new do |opts|
    opts.banner = "Usage: " + File.basename($0) + " [options] ..."

    options[:action] = false
    opts.on( "-a", "--action action", String, "action to perform" ) do |action|
      options[:action] = action
    end
    options[:puppi_module] = nil
    opts.on( "-m", "--module module", String, "module name to act on (Optional)" ) do |puppi_module|
      options[:puppi_module] = puppi_module
    end
    options[:notification] = Array.new
    opts.on( "-n", "--notification notification1,notification2", Array, "notification(s) methods (Optional)" ) do |notification|
      options[:notification] = notification
    end
    opts.on_tail("-h", "--help", "Show this message") do
      puts opts
    end
  end.parse!
rescue OptionParser::MissingArgument => e
  warn "You can't specify an option without any argumento ("+e.to_s+")"
  exit 1
end

if options.values.uniq == [false]
  warn "Use -h, --help for usage."
  exit 1
end

if options[:action] == false
  warn "You MUST specify an action"
  warn "Use -h, --help for usage."
  exit 1
end

output = Puppi::Action.new(options).output
Puppi::Notification.new(options[:notification], output)