#!/usr/bin/env ruby
# frozen_string_literal: true

require 'optimist'
require 'cfn-nag'
require 'rubygems/specification'

opts = Optimist.options do
  version CfnNagVersion::VERSION

  opt :rule_directory, 'Extra rule directories', type: :io,
                                                 required: false,
                                                 default: nil
  opt :profile_path, 'Path to a profile file', type: :io,
                                               required: false,
                                               default: nil
  opt :output_format,
      'Format of results: [csv, json, txt]',
      type: :string,
      default: 'txt'

  opt :rule_repository,
      'Path(s)s to rule repository to include in rule discovery',
      type: :strings,
      required: false
end

profile_definition = nil
unless opts[:profile_path].nil?
  profile_definition = File.read(opts[:profile_path])
end

rule_repository_definitions = []
opts[:rule_repository]&.each do |rule_repository|
  rule_repository_definitions << File.read(rule_repository)
end

rule_dumper = CfnNagRuleDumper.new(profile_definition: profile_definition,
                                   rule_directory: opts[:rule_directory],
                                   output_format: opts[:output_format],
                                   rule_repository_definitions: rule_repository_definitions)

rule_dumper.dump_rules
