Sha256: 343c70c85eba53549fc93fc6b05c22008a675842ca31d0d9828a77be2f57f981

Contents?: true

Size: 1.55 KB

Versions: 136

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

module Avm
  module Git
    module Issue
      class Complete
        module Push
          def dry_push_args
            %w[push --dry-run] + [remote_name] + pushs
          end

          def dry_push_result
            return ::Avm::Result.error('Nothing to push') if pushs.empty?

            dry_push_execution_result
          end

          def push
            if pushs.empty?
              info 'PUSH: Nada a enviar'
            else
              info "PUSH: enviando \"#{pushs}\"..."
              git_execute(%w[push origin] + pushs)
            end
          end

          def pushs_uncached
            [master_push, remove_branch_push, tag_push].reject(&:nil?)
          end

          def master_push
            remote_master_hash != branch_hash ? "#{branch_hash}:refs/heads/master" : nil
          end

          def remove_branch_push
            remote_branch_hash ? ":refs/heads/#{branch.name}" : nil
          end

          def tag_push
            return nil unless !remote_tag_hash || remote_tag_hash != branch_hash

            "#{branch_hash}:#{tag}"
          end

          private

          def dry_push_execution_result
            r = launcher_git.execute(dry_push_args)
            message = if r.fetch(:exit_code).zero?
                        'ok'
                      else
                        r.fetch(:stderr) + "\n#{::Shellwords.join(dry_push_args)}"
                      end
            ::Avm::Result.success_or_error(r.fetch(:exit_code).zero?, message)
          end
        end
      end
    end
  end
end

Version data entries

136 entries across 136 versions & 3 rubygems

Version Path
eac_tools-0.80.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.79.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.78.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.77.1 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.77.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.76.1 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.76.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.75.2 sub/avm-git/lib/avm/git/issue/complete/push.rb
avm-git-0.13.4 lib/avm/git/issue/complete/push.rb
eac_tools-0.75.1 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.75.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.74.1 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.74.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.73.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.72.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.70.1 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.70.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.69.1 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.69.0 sub/avm-git/lib/avm/git/issue/complete/push.rb
eac_tools-0.68.0 sub/avm-git/lib/avm/git/issue/complete/push.rb