Sha256: 7ef90838889de9b6ed3b47b804a4a366b248b89e7f1087c1663ea878239ed652

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

# vim:fileencoding=utf-8
require 'git/duet'
require 'git/duet/author_mapper'
require 'git/duet/command_methods'

class Git::Duet::DuetCommand
  include Git::Duet::CommandMethods

  def initialize(alpha, omega, quiet = false, global = false)
    @alpha, @omega = alpha, omega
    @quiet = !!quiet
    @global = !!global
    @author_mapper = Git::Duet::AuthorMapper.new
  end

  def execute!
    if alpha && omega
      set_alpha_as_git_config_user
      report_env_vars
      write_env_vars
    else
      show_current_config
    end
  end

  private

  attr_accessor :alpha, :omega, :author_mapper

  def set_alpha_as_git_config_user
    exec_check("#{git_config} user.name '#{alpha_info[:name]}'")
    exec_check("#{git_config} user.email '#{alpha_info[:email]}'")
  end

  def var_map
    {
      'GIT_AUTHOR_NAME' => alpha_info[:name],
      'GIT_AUTHOR_EMAIL' => alpha_info[:email],
      'GIT_COMMITTER_NAME' => omega_info[:name],
      'GIT_COMMITTER_EMAIL' => omega_info[:email]
    }
  end

  def alpha_info
    alpha_omega_info.fetch(@alpha)
  rescue KeyError, IndexError => e
    error("git-duet: Failed to find author: #{e}")
    raise Git::Duet::ScriptDieError.new(86)
  end

  def omega_info
    alpha_omega_info.fetch(@omega)
  rescue KeyError, IndexError => e
    error("git-duet: Failed to find committer: #{e}")
    raise Git::Duet::ScriptDieError.new(86)
  end

  def alpha_omega_info
    @alpha_omega_info ||= author_mapper.map(@alpha, @omega)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
git-duet-0.2.0 lib/git/duet/duet_command.rb