Sha256: 5da06e0ec56d384d1403e4f6a6efc879cfcbdc78a5e267730ca7abf578bb3d2f

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require "core"

module Git
  module Lint
    module CLI
      # The main Command Line Interface (CLI) object.
      class Shell
        include Actions::Import[
          :analyze_branch,
          :analyze_commit,
          :config,
          :hook,
          :specification,
          :logger
        ]

        def initialize parser: Parser.new, **dependencies
          super(**dependencies)
          @parser = parser
        end

        def call arguments = Core::EMPTY_ARRAY
          perform parser.call(arguments)
        rescue OptionParser::ParseError, Errors::Base => error
          logger.error { error.message }
        end

        private

        attr_reader :parser

        def perform configuration
          case configuration
            in action_analyze: true, analyze_sha: nil then analyze_branch.call
            in action_analyze: true, analyze_sha: String => sha then analyze_commit.call sha
            in action_config: Symbol => action then config.call action
            in action_hook: Pathname => path then hook.call path
            in action_version: true then logger.info { specification.labeled_version }
            else logger.any { parser.to_s }
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
git-lint-5.1.0 lib/git/lint/cli/shell.rb