mirror of
https://github.com/joomla-extensions/patchtester.git
synced 2024-12-24 11:55:42 +00:00
Added Git-Request to retrieve sha in applyWithCiServer method.
This commit is contained in:
parent
8f06c8db1c
commit
16c415872c
@ -12,11 +12,13 @@ use Joomla\Archive\Zip;
|
|||||||
use Joomla\CMS\Component\ComponentHelper;
|
use Joomla\CMS\Component\ComponentHelper;
|
||||||
use Joomla\CMS\Factory;
|
use Joomla\CMS\Factory;
|
||||||
use Joomla\CMS\Filesystem\Path;
|
use Joomla\CMS\Filesystem\Path;
|
||||||
|
use Joomla\CMS\Http\Response;
|
||||||
use Joomla\CMS\Language\Text;
|
use Joomla\CMS\Language\Text;
|
||||||
use Joomla\CMS\Version;
|
use Joomla\CMS\Version;
|
||||||
use Joomla\Filesystem\File;
|
use Joomla\Filesystem\File;
|
||||||
use Joomla\Filesystem\Folder;
|
use Joomla\Filesystem\Folder;
|
||||||
use PatchTester\GitHub\Exception\UnexpectedResponse;
|
use PatchTester\GitHub\Exception\UnexpectedResponse;
|
||||||
|
use PatchTester\GitHub\GitHub;
|
||||||
use PatchTester\Helper;
|
use PatchTester\Helper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -181,6 +183,13 @@ class PullModel extends AbstractModel
|
|||||||
// Get the CIServer Registry
|
// Get the CIServer Registry
|
||||||
$ciSettings = Helper::initializeCISettings();
|
$ciSettings = Helper::initializeCISettings();
|
||||||
|
|
||||||
|
// Get the Github object
|
||||||
|
$github = Helper::initializeGithub();
|
||||||
|
|
||||||
|
// retrieve pullData for sha later on.
|
||||||
|
$pull = $this->retrieveGitHubData($github, $id);
|
||||||
|
$sha = $pull->head->sha;
|
||||||
|
|
||||||
// Create tmp folder if it does not exist
|
// Create tmp folder if it does not exist
|
||||||
if (!file_exists($ciSettings->get('folder.temp')))
|
if (!file_exists($ciSettings->get('folder.temp')))
|
||||||
{
|
{
|
||||||
@ -267,7 +276,7 @@ class PullModel extends AbstractModel
|
|||||||
// Clear temp folder and store applied patch in database
|
// Clear temp folder and store applied patch in database
|
||||||
Folder::delete($tempPath);
|
Folder::delete($tempPath);
|
||||||
|
|
||||||
$this->saveAppliedPatch($id, $files);
|
$this->saveAppliedPatch($id, $files, $sha);
|
||||||
|
|
||||||
// Change the media version
|
// Change the media version
|
||||||
$version = new Version;
|
$version = new Version;
|
||||||
@ -292,33 +301,7 @@ class PullModel extends AbstractModel
|
|||||||
// Get the Github object
|
// Get the Github object
|
||||||
$github = Helper::initializeGithub();
|
$github = Helper::initializeGithub();
|
||||||
|
|
||||||
try
|
$pull = $this->retrieveGitHubData($github, $id);
|
||||||
{
|
|
||||||
$rateResponse = $github->getRateLimit();
|
|
||||||
$rate = json_decode($rateResponse->body);
|
|
||||||
}
|
|
||||||
catch (UnexpectedResponse $e)
|
|
||||||
{
|
|
||||||
throw new \RuntimeException(Text::sprintf('COM_PATCHTESTER_COULD_NOT_CONNECT_TO_GITHUB', $e->getMessage()), $e->getCode(), $e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If over the API limit, we can't build this list
|
|
||||||
if ($rate->resources->core->remaining == 0)
|
|
||||||
{
|
|
||||||
throw new \RuntimeException(
|
|
||||||
Text::sprintf('COM_PATCHTESTER_API_LIMIT_LIST', Factory::getDate($rate->resources->core->reset))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
$pullResponse = $github->getPullRequest($this->getState()->get('github_user'), $this->getState()->get('github_repo'), $id);
|
|
||||||
$pull = json_decode($pullResponse->body);
|
|
||||||
}
|
|
||||||
catch (UnexpectedResponse $e)
|
|
||||||
{
|
|
||||||
throw new \RuntimeException(Text::sprintf('COM_PATCHTESTER_COULD_NOT_CONNECT_TO_GITHUB', $e->getMessage()), $e->getCode(), $e);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_null($pull->head->repo))
|
if (is_null($pull->head->repo))
|
||||||
{
|
{
|
||||||
@ -460,6 +443,51 @@ class PullModel extends AbstractModel
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Patches the code with the supplied pull request
|
||||||
|
*
|
||||||
|
* @param GitHub $github github object
|
||||||
|
* @param integer $id Id of the pull request
|
||||||
|
*
|
||||||
|
* @return Response
|
||||||
|
*
|
||||||
|
* @since 2.0
|
||||||
|
*
|
||||||
|
* @throws \RuntimeException
|
||||||
|
*/
|
||||||
|
private function retrieveGitHubData($github, $id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$rateResponse = $github->getRateLimit();
|
||||||
|
$rate = json_decode($rateResponse->body);
|
||||||
|
}
|
||||||
|
catch (UnexpectedResponse $e)
|
||||||
|
{
|
||||||
|
throw new \RuntimeException(Text::sprintf('COM_PATCHTESTER_COULD_NOT_CONNECT_TO_GITHUB', $e->getMessage()), $e->getCode(), $e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If over the API limit, we can't build this list
|
||||||
|
if ($rate->resources->core->remaining == 0)
|
||||||
|
{
|
||||||
|
throw new \RuntimeException(
|
||||||
|
Text::sprintf('COM_PATCHTESTER_API_LIMIT_LIST', Factory::getDate($rate->resources->core->reset))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$pullResponse = $github->getPullRequest($this->getState()->get('github_user'), $this->getState()->get('github_repo'), $id);
|
||||||
|
$pull = json_decode($pullResponse->body);
|
||||||
|
}
|
||||||
|
catch (UnexpectedResponse $e)
|
||||||
|
{
|
||||||
|
throw new \RuntimeException(Text::sprintf('COM_PATCHTESTER_COULD_NOT_CONNECT_TO_GITHUB', $e->getMessage()), $e->getCode(), $e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $pull;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves the applied patch into database
|
* Saves the applied patch into database
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user