Sha256: d2afafade235ba13d4f18255488d08c77f4c250b16b6a19171c1fca99f5163dc

Contents?: true

Size: 1.96 KB

Versions: 25

Compression:

Stored size: 1.96 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/console/docopt_runner'
require 'eac_ruby_utils/console/speaker'
require 'avm/git/issue/complete'

module Avm
  module Tools
    class Runner < ::EacRubyUtils::Console::DocoptRunner
      class Git < ::EacRubyUtils::Console::DocoptRunner
        class Issue < ::EacRubyUtils::Console::DocoptRunner
          include ::EacRubyUtils::Console::Speaker

          DOC = <<~DOCOPT
            Closes a issue in a Git repository.

            Usage:
              __PROGRAM__ [options] [complete]
              __PROGRAM__ -h | --help

            Options:
              -h --help                             Show this screen.
              -s --skip-validations=<validations>   Does not validate conditions on <validations>
                                                    (Comma separated value).
              -y --yes                              Does not ask for user confirmation.

            Validations:
            %%VALIDATIONS%%
          DOCOPT

          def run
            complete = ::Avm::Git::Issue::Complete.new(git_complete_issue_options)
            complete.start_banner
            fatal_error('Some validation did not pass') unless complete.valid?
            complete.run if options.fetch('complete') && confirm?
          end

          def doc
            DOC.gsub('%%VALIDATIONS%%', doc_validations_list)
          end

          private

          def confirm?
            options.fetch('--yes') || request_input('Confirm issue completion?', bool: true)
          end

          def skip_validations
            options.fetch('--skip-validations').to_s.split(',').map(&:strip).reject(&:blank?)
          end

          def git_complete_issue_options
            { dir: context(:repository_path), skip_validations: skip_validations }
          end

          def doc_validations_list
            ::Avm::Git::Issue::Complete::VALIDATIONS.keys.map { |k| "  * #{k}" }.join("\n")
          end
        end
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
avm-tools-0.60.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.59.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.58.1 lib/avm/tools/runner/git/issue.rb
avm-tools-0.58.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.57.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.56.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.55.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.54.2 lib/avm/tools/runner/git/issue.rb
avm-tools-0.54.1 lib/avm/tools/runner/git/issue.rb
avm-tools-0.54.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.53.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.52.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.51.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.50.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.49.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.48.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.47.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.46.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.45.0 lib/avm/tools/runner/git/issue.rb
avm-tools-0.44.2 lib/avm/tools/runner/git/issue.rb