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

require "json"

require_relative "../lib/secrets"
require_relative "../lib/services/logger"

noop = false
if ARGV[0] == "print" || ARGV[0] == "--noop"
  noop = true
end

begin
  logger = GitHub::OctoSecrets::Service::Logger.logger("scan-secrets")

  scanner = GitHub::OctoSecrets::Secrets.new(logger)

  secrets = scanner.scan(noop)

  if noop
    # Simple output of results of "scan"
    puts "Noop mode, printing results of scan:"
    puts JSON.pretty_generate(secrets)
    # Statistics
    scanner.print_statistics(GitHub::OctoSecrets::Secrets::DATADOG_METRIC_PREFIX)
  else
    # Write the auditlog
    logger.info("Writing audit log")
    resp = scanner.write_auditlog(secrets)
  end
rescue StandardError => e
  logger.error("Error running 'scan-secrets': #{e.class}: #{e.message}")
end
