Sha256: 3c5f3f6ab255dca8eb2e4818102fba5cfe4dfed7367991841558b1d767903085

Contents?: true

Size: 1.34 KB

Versions: 4

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

require 'avm/result'
require 'ostruct'

module Avm
  module Git
    module Issue
      class Complete
        VALIDATIONS = {
          clean_workspace: 'Clean workspace?',
          branch_name: 'Branch name',
          branch_hash: 'Branch hash',
          follow_master: 'Follow master?',
          commits: 'Commits?',
          bifurcations: 'Bifurcations?',
          dry_push: 'Dry push?',
          test: 'Test ok?'
        }.with_indifferent_access.freeze

        def valid?
          validations.map(&:result).none?(&:error?)
        end

        def validations_banner
          validations.each do |v|
            infov "[#{v.key}] #{v.label}", v.result.label
          end
        end

        def validations
          VALIDATIONS.map do |key, label|
            ::OpenStruct.new(key: key, label: label, result: validation_result(key))
          end
        end

        def validation_result(key)
          if skip_validations.include?(key)
            ::Avm::Result.neutral('skipped')
          else
            send("#{key}_result")
          end
        end

        def validate_skip_validations
          skip_validations.each do |validation|
            next if VALIDATIONS.keys.include?(validation)

            raise "\"#{validation}\" is not a registered validation"
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
avm-tools-0.48.0 lib/avm/git/issue/complete/_validations.rb
avm-tools-0.47.0 lib/avm/git/issue/complete/_validations.rb
avm-tools-0.46.0 lib/avm/git/issue/complete/_validations.rb
avm-tools-0.45.0 lib/avm/git/issue/complete/_validations.rb