class Papertrail::CliAddGroup

Public Instance Methods

run() click to toggle source
# File lib/papertrail/cli_add_group.rb, line 11
def run
  options = {
    :configfile => nil,
    :token => ENV['PAPERTRAIL_API_TOKEN'],
  }

  if configfile = find_configfile
    configfile_options = load_configfile(configfile)
    options.merge!(configfile_options)
  end

  OptionParser.new do |opts|
    opts.banner = "papertrail-add-group"

    opts.on("-h", "--help", "Show usage") do |v|
      puts opts
      exit
    end
    opts.on("-c", "--configfile PATH", "Path to config (~/.papertrail.yml)") do |v|
      options[:configfile] = File.expand_path(v)
    end
    opts.on("-g", "--group SYSTEM", "Name of group to add") do |v|
      options[:group] = v
    end
    opts.on("-w", "--system-wildcard WILDCARD", "Wildcard for system match") do |v|
      options[:wildcard] = v
    end

    opts.separator usage
  end.parse!

  if options[:configfile]
    configfile_options = load_configfile(options[:configfile])
    options.merge!(configfile_options)
  end

  raise OptionParser::MissingArgument, 'group' if options[:group].nil?

  Papertrail::Connection.new(options).start do |connection|
    # Bail if group already exists
    existing = connection.show_group(options[:group])
    if existing && existing['name'].upcase == options[:group].upcase
      exit 0
    end

    if connection.create_group(options[:group], options[:wildcard])
      exit 0
    end
  end

  exit 1
rescue OptionParser::ParseError => e
  puts "Error: #{e}"
  puts usage
  exit 1
rescue Net::HTTPServerException => e
  output_http_error(e)
  exit 1
end
usage() click to toggle source
# File lib/papertrail/cli_add_group.rb, line 71
    def usage
      <<-EOF

  Usage:
    papertrail-add-group [-g group] [-w system-wildcard] [-c papertrail.yml]

  Example:
    papertrail-add-group -g mygroup -w mygroup-systems*

  EOF
    end