Class: Indocker::Repositories::Clonner

Inherits:
Object
  • Object
show all
Defined in:
lib/indocker/repositories/clonner.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration, logger) ⇒ Clonner

Returns a new instance of Clonner.



4
5
6
7
# File 'lib/indocker/repositories/clonner.rb', line 4

def initialize(configuration, logger)
  @configuration = configuration
  @logger = logger
end

Instance Method Details

#clone(session, repository) ⇒ Object

Raises:

  • (ArgumenError)


9
10
11
12
13
14
15
16
# File 'lib/indocker/repositories/clonner.rb', line 9

def clone(session, repository)
  raise ArgumenError.new("only git repositories should be clonned") if !repository.is_git?

  session.exec!("rm -rf #{repository.clone_path} && mkdir -p #{repository.clone_path}")
  
  git_command = "git clone -b #{repository.branch} --depth 1 #{repository.remote_url} #{repository.clone_path}"
  session.exec!("ssh-agent bash -c 'ssh-add ~/.ssh/#{repository.ssh_key}; #{git_command}'")
end