Sha256: e0f0022157064ea098f4f85be6ce12feb3df30bf0df05d8c2fdaedcf0e23e5be

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require "thor"
require "thor/hollaback"

# Commands
require "mihari/commands/mixins"

require "mihari/commands/alert"
require "mihari/commands/database"
require "mihari/commands/search"
require "mihari/commands/version"
require "mihari/commands/web"

# CLIs
require "mihari/cli/base"

require "mihari/cli/alert"
require "mihari/cli/database"
require "mihari/cli/rule"

module Mihari
  module CLI
    #
    # Main CLI class
    #
    class Main < Base
      class_option :debug, desc: "Sets up debug mode", aliases: ["-d"], type: :boolean
      class_around :safe_execute

      include Mihari::Commands::Search
      include Mihari::Commands::Version
      include Mihari::Commands::Web

      include Mihari::Mixins::UnwrapError

      no_commands do
        def safe_execute
          yield
        rescue StandardError => e
          err = unwrap_error(e)

          raise err if options["debug"]

          case err
          when ValidationError
            warn JSON.pretty_generate(err.errors.to_h)
          when StandardError
            Sentry.capture_exception(err) if Sentry.initialized?
            warn err
          end

          exit 1
        end
      end

      desc "db", "Sub commands for DB"
      subcommand "db", Database

      desc "rule", "Sub commands for rule"
      subcommand "rule", Rule

      desc "alert", "Sub commands for alert"
      subcommand "alert", Alert
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mihari-6.3.0 lib/mihari/cli/main.rb
mihari-6.2.0 lib/mihari/cli/main.rb
mihari-6.1.0 lib/mihari/cli/main.rb
mihari-6.0.0 lib/mihari/cli/main.rb