Sha256: 8a42892ecf710e45a6df9596372ee82372ab080fe9f877accd71e8037232f0fb

Contents?: true

Size: 1.72 KB

Versions: 11

Compression:

Stored size: 1.72 KB

Contents

module Onering
  module CLI
    module Report
      def self.configure(global={})
        @api = (Onering::CLI.connect(global.merge({
          :autoconnect => false
        })) rescue nil)
        @opts = ::Trollop::options do
          banner <<-EOS
Generate a system report that can be saved or submitted to a Onering server

Usage:
    onering [global] report [options]

Options:
EOS
          opt :id,     "Override the autodetected Hardware ID for this node", :short => '-I', :type => :string
          opt :fields, "Set the named FIELD to equal VALUE in the format FIELD=VALUE. Can be specified multiple times", :short => '-o', :type => :string, :multi => true
          opt :save,   "Save the report output to the configured Onering server"
        end

      # initialize report generator with user options
        Onering::Reporter.setup({
          :id => @opts[:id]
        }.compact)
      end

      def self.run(args)
        report = Onering::Reporter.report().stringify_keys()

      # pull report overrides from the config file
        @api.opt('reporter.fields',{}).each do |field, value|
          if value.is_a?(Hash)
            value.coalesce(field, nil, '.').each do |k,v|
              report = report.set(k, v)
            end
          else
            report = report.set(field, value)
          end
        end

      # pull overrides from CLI arguments
        @opts[:fields].each do |field|
          key, value = field.split('=', 2)
          report = report.set(key, value)
        end


      # save if specified
        if @opts[:save] === true
          @api.connect()
          @api.devices.save(report['id']) do
            MultiJson.dump(report)
          end
        end

        return report
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
onering-client-0.0.60 lib/onering/cli/reporter.rb
onering-client-0.0.59 lib/onering/cli/reporter.rb
onering-client-0.0.58 lib/onering/cli/reporter.rb
onering-client-0.0.57 lib/onering/cli/reporter.rb
onering-client-0.0.56 lib/onering/cli/reporter.rb
onering-client-0.0.55 lib/onering/cli/reporter.rb
onering-client-0.0.54 lib/onering/cli/reporter.rb
onering-client-0.0.53 lib/onering/cli/reporter.rb
onering-client-0.0.52 lib/onering/cli/reporter.rb
onering-client-0.0.51 lib/onering/cli/reporter.rb
onering-client-0.0.50 lib/onering/cli/reporter.rb