/**
* Execute the job.
* @throws \RuntimeException
* @dispatches UpdateGitReferences
*/
public function handle()
{
$private_key = tempnam(storage_path('app/'), 'sshkey');
file_put_contents($private_key, $this->project->private_key);
$wrapper = with(new ScriptParser())->parseFile('tools.SSHWrapperScript', ['private_key' => $private_key]);
$wrapper_file = tempnam(storage_path('app/'), 'gitssh');
file_put_contents($wrapper_file, $wrapper);
$process = new Process('tools.MirrorGitRepository', ['wrapper_file' => $wrapper_file, 'mirror_path' => $this->project->mirrorPath(), 'repository' => $this->project->repository]);
$process->run();
unlink($wrapper_file);
unlink($private_key);
if (!$process->isSuccessful()) {
throw new \RuntimeException('Could not mirror repository - ' . $process->getErrorOutput());
}
$this->project->last_mirrored = date('Y-m-d H:i:s');
$this->project->save();
$this->dispatch(new UpdateGitReferences($this->project));
}