#!/usr/bin/env ruby # Creat list of inventory devices based on device model require 'trollop' require 'json' require 'logger' require 'syslog/logger' require 'bjn_inventory' parser = Trollop::Parser.new do version BjnInventory::VERSION banner <<-USAGE.gsub(/^\s{8}/,'') Usage: inventory-devices [options] USAGE opt :key, 'Specify the key of inventory hash', type: :string opt :manifest, 'Specify the manifest that defines this inventory', required: true, type: :string opt :debug, 'Enable debug output', :short => '-D' opt :syslog, 'Log to Syslog', :short => '-S' stop_on_unknown end opt = Trollop::with_standard_exception_handling parser do parser.parse(ARGV) end logger = opt[:syslog]? Syslog::Logger.new('inventory-devices') : Logger.new(STDERR) logger.level = opt[:debug]? Logger::DEBUG : Logger::WARN manifest = JSON.parse(File.read(opt[:manifest])) inventory = BjnInventory::Inventory.new(manifest.merge({logger: logger})) if opt[:key] results = inventory.by(opt[:key]) else results = inventory.devices.map { |device| device.to_hash } end puts JSON.pretty_generate(results)