class Pear::PairingSession

Attributes

participants[R]
runner[R]

Public Class Methods

new(participants:, configuration: Pear::Configuration.new, runner: Pear::SystemRunner.new) click to toggle source
# File lib/pear/pairing_session.rb, line 5
def initialize(participants:,
               configuration: Pear::Configuration.new,
               runner: Pear::SystemRunner.new)
  @configuration = configuration
  @runner = runner

  set_session_participants(participants)
end

Public Instance Methods

configure_repository() click to toggle source
# File lib/pear/pairing_session.rb, line 14
def configure_repository
  if repository_already_configured?
    abort('Already pairing! Run `pear -c` to start over.')
  else
    runner.run("git config --add user.name \'#{git_user_name}\'")
    runner.run("git config --add user.email \'#{git_user_email}\'")
  end
end
git_user_email() click to toggle source
# File lib/pear/pairing_session.rb, line 27
def git_user_email
  to_email(participants)
end
git_user_name() click to toggle source
# File lib/pear/pairing_session.rb, line 23
def git_user_name
  to_sentence(session_participants_names)
end

Private Instance Methods

repository_already_configured?() click to toggle source
# File lib/pear/pairing_session.rb, line 39
def repository_already_configured?
  runner.run("git config --get-all user.name").split(/\n/).any? do |name|
    name == git_user_name
  end
end
session_participants_names() click to toggle source
# File lib/pear/pairing_session.rb, line 45
def session_participants_names
  participants.map { |p| @configuration.authors[p] }
end
set_session_participants(participants) click to toggle source
# File lib/pear/pairing_session.rb, line 33
def set_session_participants(participants)
  raise ArgumentError, 'Participants must be registered' \
    unless participants.all? { |p| @configuration.authors.key?(p) }
  @participants = participants
end
to_email(initials) click to toggle source
# File lib/pear/pairing_session.rb, line 54
def to_email(initials)
  team, domain = @configuration.email.split('@')
  "#{team}+#{initials.join('-')}@#{domain}"
end
to_sentence(full_names) click to toggle source
# File lib/pear/pairing_session.rb, line 49
def to_sentence(full_names)
  last_name = full_names.pop
  [full_names.join(', '), last_name].join(' and ')
end