Sha256: 87be6d740df375ee843ca744468b83e3f88c749e0935a05afac47b3f8fcec0c0

Contents?: true

Size: 1.77 KB

Versions: 5

Compression:

Stored size: 1.77 KB

Contents

# frozen_string_literal: true

require "thor"
require "thor/hollaback"

# Commands
require "mihari/commands/alert"
require "mihari/commands/database"
require "mihari/commands/search"
require "mihari/commands/sidekiq"
require "mihari/commands/version"
require "mihari/commands/web"

# CLIs
require "mihari/cli/base"

require "mihari/cli/alert"
require "mihari/cli/artifact"
require "mihari/cli/config"
require "mihari/cli/database"
require "mihari/cli/rule"
require "mihari/cli/tag"

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

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

      include Concerns::ErrorUnwrappable

      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

      desc "artifact", "Sub commands for artifact"
      subcommand "artifact", Artifact

      desc "tag", "Sub commands for tag"
      subcommand "tag", Tag

      desc "config", "Sub commands for config"
      subcommand "config", Config
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mihari-7.0.4 lib/mihari/cli/application.rb
mihari-7.0.3 lib/mihari/cli/application.rb
mihari-7.0.2 lib/mihari/cli/application.rb
mihari-7.0.1 lib/mihari/cli/application.rb
mihari-7.0.0 lib/mihari/cli/application.rb