Updating PHPCI to support new b8framework release
This commit is contained in:
parent
a584f29316
commit
1ddce31488
|
@ -10,6 +10,7 @@
|
|||
namespace PHPCI;
|
||||
|
||||
use b8;
|
||||
use b8\Http\Response;
|
||||
use b8\Http\Response\RedirectResponse;
|
||||
use b8\View;
|
||||
|
||||
|
@ -19,52 +20,38 @@ use b8\View;
|
|||
*/
|
||||
class Application extends b8\Application
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
$request =& $this->request;
|
||||
$route = '/:controller/:action';
|
||||
$opts = ['controller' => 'Home', 'action' => 'index'];
|
||||
|
||||
$this->router->clearRoutes();
|
||||
$this->router->register($route, $opts, function (&$route, Response &$response) use (&$request)
|
||||
{
|
||||
$skipValidation = in_array($route['controller'], array('session', 'webhook', 'build-status'));
|
||||
|
||||
if (!$skipValidation && !$this->validateSession()) {
|
||||
if ($request->isAjax()) {
|
||||
$response->setResponseCode(401);
|
||||
$response->setContent('');
|
||||
} else {
|
||||
$response = new RedirectResponse($response);
|
||||
$response->setHeader('Location', PHPCI_URL.'session/login');
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Handle an incoming web request.
|
||||
*/
|
||||
public function handleRequest()
|
||||
{
|
||||
try {
|
||||
$this->initRequest();
|
||||
|
||||
// Validate the user's session unless it is a login/logout action or a web hook:
|
||||
$sessionAction = ($this->controllerName == 'Session' && in_array($this->action, array('login', 'logout')));
|
||||
$externalAction = in_array($this->controllerName, array('Bitbucket', 'Github', 'Gitlab', 'BuildStatus', 'Git'));
|
||||
$skipValidation = ($externalAction || $sessionAction);
|
||||
|
||||
if ($skipValidation || $this->validateSession()) {
|
||||
parent::handleRequest();
|
||||
}
|
||||
} catch (\Exception $ex) {
|
||||
$content = '<h1>There was a problem with this request</h1>
|
||||
<p>Please paste the details below into a
|
||||
<a href="https://github.com/Block8/PHPCI/issues/new">new bug report</a>
|
||||
so that we can investigate and fix it.</p>';
|
||||
|
||||
ob_start();
|
||||
var_dump(array(
|
||||
'message' => $ex->getMessage(),
|
||||
'file' => $ex->getFile(),
|
||||
'line' => $ex->getLine(),
|
||||
'trace' => $ex->getTraceAsString()
|
||||
));
|
||||
var_dump(array(
|
||||
'PATH_INFO' => $_SERVER['PATH_INFO'],
|
||||
'REDIRECT_PATH_INFO' => $_SERVER['REDIRECT_PATH_INFO'],
|
||||
'REQUEST_URI' => $_SERVER['REQUEST_URI'],
|
||||
'PHP_SELF' => $_SERVER['PHP_SELF'],
|
||||
'SCRIPT_NAME' => $_SERVER['SCRIPT_NAME'],
|
||||
'DOCUMENT_ROOT' => $_SERVER['DOCUMENT_ROOT'],
|
||||
'SCRIPT_FILENAME' => $_SERVER['SCRIPT_FILENAME'],
|
||||
'SERVER_SOFTWARE' => $_SERVER['SERVER_SOFTWARE'],
|
||||
));
|
||||
$content .= ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->response->setContent($content);
|
||||
$this->response->disableLayout();
|
||||
}
|
||||
|
||||
$this->response = parent::handleRequest();
|
||||
|
||||
if (View::exists('layout') && $this->response->hasLayout()) {
|
||||
$view = new View('layout');
|
||||
|
@ -91,14 +78,6 @@ class Application extends b8\Application
|
|||
unset($_SESSION['user_id']);
|
||||
}
|
||||
|
||||
if ($this->request->isAjax()) {
|
||||
$this->response->setResponseCode(401);
|
||||
$this->response->setContent('');
|
||||
} else {
|
||||
$this->response = new RedirectResponse($this->response);
|
||||
$this->response->setHeader('Location', PHPCI_URL.'session/login');
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ class Controller extends \b8\Controller
|
|||
if (View::exists($this->className)) {
|
||||
$this->controllerView = new View($this->className);
|
||||
} else {
|
||||
$this->controllerView = new View\UserView('{@content}');
|
||||
$this->controllerView = new View\Template('{@content}');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,67 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPCI - Continuous Integration for PHP
|
||||
*
|
||||
* @copyright Copyright 2013, Block 8 Limited.
|
||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
||||
* @link http://www.phptesting.org/
|
||||
*/
|
||||
|
||||
namespace PHPCI\Controller;
|
||||
|
||||
use b8;
|
||||
use b8\Store;
|
||||
use PHPCI\Model\Build;
|
||||
|
||||
/**
|
||||
* BitBucket Controller - Processes webhook pings from BitBucket.
|
||||
* @author Dan Cryer <dan@block8.co.uk>
|
||||
* @package PHPCI
|
||||
* @subpackage Web
|
||||
*/
|
||||
class BitbucketController extends \PHPCI\Controller
|
||||
{
|
||||
/**
|
||||
* @var \PHPCI\Store\BuildStore
|
||||
*/
|
||||
protected $buildStore;
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->buildStore = Store\Factory::getStore('Build');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Bitbucket POST service.
|
||||
*/
|
||||
public function webhook($project)
|
||||
{
|
||||
$payload = json_decode($this->getParam('payload'), true);
|
||||
$branches = array();
|
||||
$commits = array();
|
||||
|
||||
foreach ($payload['commits'] as $commit) {
|
||||
if (!in_array($commit['branch'], $branches)) {
|
||||
$branches[] = $commit['branch'];
|
||||
$commits[$commit['branch']] = $commit['raw_node'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($branches as $branch) {
|
||||
try {
|
||||
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
$build->setCommitId($commits[$branch]);
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
$build->setBranch($branch);
|
||||
$this->buildStore->save($build);
|
||||
} catch (\Exception $ex) {
|
||||
}
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPCI - Continuous Integration for PHP
|
||||
*
|
||||
* @copyright Copyright 2013, Block 8 Limited.
|
||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
||||
* @link http://www.phptesting.org/
|
||||
*/
|
||||
|
||||
namespace PHPCI\Controller;
|
||||
|
||||
use b8;
|
||||
use b8\Store;
|
||||
use PHPCI\Model\Build;
|
||||
|
||||
/**
|
||||
* @author Sami Tikka <stikka@iki.fi>
|
||||
*/
|
||||
class GitController extends \PHPCI\Controller
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
$this->_buildStore = Store\Factory::getStore('Build');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by POSTing to /git/webhook/<project_id>?branch=<branch>&commit=<commit>
|
||||
*
|
||||
* @param string $project
|
||||
*/
|
||||
public function webhook($project)
|
||||
{
|
||||
$branch = $this->getParam('branch');
|
||||
$commit = $this->getParam('commit');
|
||||
|
||||
try {
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
|
||||
if ($branch !== null && trim($branch) !== '') {
|
||||
$build->setBranch($branch);
|
||||
} else {
|
||||
$build->setBranch('master');
|
||||
}
|
||||
|
||||
if ($commit !== null && trim($commit) !== '') {
|
||||
$build->setCommitId($commit);
|
||||
}
|
||||
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
try {
|
||||
$this->_buildStore->save($build);
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
}
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPCI - Continuous Integration for PHP
|
||||
*
|
||||
* @copyright Copyright 2013, Block 8 Limited.
|
||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
||||
* @link http://www.phptesting.org/
|
||||
*/
|
||||
|
||||
namespace PHPCI\Controller;
|
||||
|
||||
use b8;
|
||||
use b8\Store;
|
||||
use PHPCI\Model\Build;
|
||||
|
||||
/**
|
||||
* Github Controller - Processes webhook pings from Github.
|
||||
* @author Dan Cryer <dan@block8.co.uk>
|
||||
* @package PHPCI
|
||||
* @subpackage Web
|
||||
*/
|
||||
class GithubController extends \PHPCI\Controller
|
||||
{
|
||||
/**
|
||||
* @var \PHPCI\Store\BuildStore
|
||||
*/
|
||||
protected $buildStore;
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->buildStore = Store\Factory::getStore('Build');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Github Webhooks:
|
||||
*/
|
||||
public function webhook($project)
|
||||
{
|
||||
$payload = json_decode($this->getParam('payload'), true);
|
||||
|
||||
// Github sends a payload when you close a pull request with a
|
||||
// non-existant commit. We don't want this.
|
||||
if ($payload['after'] === '0000000000000000000000000000000000000000') {
|
||||
die('OK');
|
||||
}
|
||||
|
||||
try {
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
$build->setCommitId($payload['after']);
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
||||
|
||||
if (!empty($payload['pusher']['email'])) {
|
||||
$build->setCommitterEmail($payload['pusher']['email']);
|
||||
}
|
||||
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
try {
|
||||
$build = $this->buildStore->save($build);
|
||||
$build->sendStatusPostback();
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPCI - Continuous Integration for PHP
|
||||
*
|
||||
* @copyright Copyright 2013, Block 8 Limited.
|
||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
||||
* @link http://www.phptesting.org/
|
||||
*/
|
||||
|
||||
namespace PHPCI\Controller;
|
||||
|
||||
use b8;
|
||||
use b8\Store;
|
||||
use PHPCI\Model\Build;
|
||||
|
||||
/**
|
||||
* Gitlab Controller - Processes webhook pings from Gitlab.
|
||||
* @author Alex Russell <alex@clevercherry.com>, Dan Cryer <dan@block8.co.uk>
|
||||
* @package PHPCI
|
||||
* @subpackage Web
|
||||
*/
|
||||
class GitlabController extends \PHPCI\Controller
|
||||
{
|
||||
/**
|
||||
* @var \PHPCI\Store\BuildStore
|
||||
*/
|
||||
protected $buildStore;
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->buildStore = Store\Factory::getStore('Build');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Gitlab Webhooks:
|
||||
*/
|
||||
public function webhook($project)
|
||||
{
|
||||
$payload = json_decode(file_get_contents("php://input"), true);
|
||||
|
||||
try {
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
$build->setCommitId($payload['after']);
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
try {
|
||||
$build = $this->buildStore->save($build);
|
||||
$build->sendStatusPostback();
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
}
|
190
PHPCI/Controller/WebhookController.php
Normal file
190
PHPCI/Controller/WebhookController.php
Normal file
|
@ -0,0 +1,190 @@
|
|||
<?php
|
||||
/**
|
||||
* PHPCI - Continuous Integration for PHP
|
||||
*
|
||||
* @copyright Copyright 2013, Block 8 Limited.
|
||||
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
|
||||
* @link http://www.phptesting.org/
|
||||
*/
|
||||
|
||||
namespace PHPCI\Controller;
|
||||
|
||||
use b8;
|
||||
use b8\Store;
|
||||
use PHPCI\Model\Build;
|
||||
|
||||
/**
|
||||
* Webhook Controller - Processes webhook pings from BitBucket, Github, Gitlab, etc.
|
||||
* @author Dan Cryer <dan@block8.co.uk>
|
||||
* @author Sami Tikka <stikka@iki.fi>
|
||||
* @author Alex Russell <alex@clevercherry.com>
|
||||
* @package PHPCI
|
||||
* @subpackage Web
|
||||
*/
|
||||
class WebhookController extends \PHPCI\Controller
|
||||
{
|
||||
/**
|
||||
* @var \PHPCI\Store\BuildStore
|
||||
*/
|
||||
protected $buildStore;
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->buildStore = Store\Factory::getStore('Build');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Bitbucket POST service.
|
||||
*/
|
||||
public function bitbucket($project)
|
||||
{
|
||||
$payload = json_decode($this->getParam('payload'), true);
|
||||
$branches = array();
|
||||
$commits = array();
|
||||
|
||||
foreach ($payload['commits'] as $commit) {
|
||||
if (!in_array($commit['branch'], $branches)) {
|
||||
$branches[] = $commit['branch'];
|
||||
$commits[$commit['branch']] = $commit['raw_node'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($branches as $branch) {
|
||||
try {
|
||||
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
$build->setCommitId($commits[$branch]);
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
$build->setBranch($branch);
|
||||
$this->buildStore->save($build);
|
||||
} catch (\Exception $ex) {
|
||||
}
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by POSTing to /git/webhook/<project_id>?branch=<branch>&commit=<commit>
|
||||
*
|
||||
* @param string $project
|
||||
*/
|
||||
public function git($project)
|
||||
{
|
||||
$branch = $this->getParam('branch');
|
||||
$commit = $this->getParam('commit');
|
||||
|
||||
try {
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
|
||||
if ($branch !== null && trim($branch) !== '') {
|
||||
$build->setBranch($branch);
|
||||
} else {
|
||||
$build->setBranch('master');
|
||||
}
|
||||
|
||||
if ($commit !== null && trim($commit) !== '') {
|
||||
$build->setCommitId($commit);
|
||||
}
|
||||
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
try {
|
||||
$this->_buildStore->save($build);
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Github Webhooks:
|
||||
*/
|
||||
public function github($project)
|
||||
{
|
||||
$payload = json_decode($this->getParam('payload'), true);
|
||||
|
||||
// Github sends a payload when you close a pull request with a
|
||||
// non-existant commit. We don't want this.
|
||||
if ($payload['after'] === '0000000000000000000000000000000000000000') {
|
||||
die('OK');
|
||||
}
|
||||
|
||||
try {
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
$build->setCommitId($payload['after']);
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
||||
|
||||
if (!empty($payload['pusher']['email'])) {
|
||||
$build->setCommitterEmail($payload['pusher']['email']);
|
||||
}
|
||||
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
try {
|
||||
$build = $this->buildStore->save($build);
|
||||
$build->sendStatusPostback();
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by Gitlab Webhooks:
|
||||
*/
|
||||
public function gitlab($project)
|
||||
{
|
||||
$payload = json_decode(file_get_contents("php://input"), true);
|
||||
|
||||
try {
|
||||
$build = new Build();
|
||||
$build->setProjectId($project);
|
||||
$build->setCommitId($payload['after']);
|
||||
$build->setStatus(Build::STATUS_NEW);
|
||||
$build->setLog('');
|
||||
$build->setCreated(new \DateTime());
|
||||
$build->setBranch(str_replace('refs/heads/', '', $payload['ref']));
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 400 Bad Request');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
try {
|
||||
$build = $this->buildStore->save($build);
|
||||
$build->sendStatusPostback();
|
||||
} catch (\Exception $ex) {
|
||||
header('HTTP/1.1 500 Internal Server Error');
|
||||
header('Ex: ' . $ex->getMessage());
|
||||
die('FAIL');
|
||||
}
|
||||
|
||||
die('OK');
|
||||
}
|
||||
}
|
|
@ -27,17 +27,17 @@
|
|||
switch($project->getType())
|
||||
{
|
||||
case 'github':
|
||||
$url = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . '://' . $_SERVER['HTTP_HOST'] . '/github/webhook/' . $project->getId();
|
||||
$url = PHPCI_URL . 'webhook/github/' . $project->getId();
|
||||
print ' as a "WebHook URL" in the <a href="https://github.com/' . $project->getReference() . '/settings/hooks">Service Hooks</a> section of your Github repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
||||
break;
|
||||
|
||||
case 'gitlab':
|
||||
$url = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . '://' . $_SERVER['HTTP_HOST'] . '/gitlab/webhook/' . $project->getId();
|
||||
$url = PHPCI_URL. 'webhook/gitlab/' . $project->getId();
|
||||
print ' as a "WebHook URL" in the Web Hooks section of your Gitlab repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
||||
break;
|
||||
|
||||
case 'bitbucket':
|
||||
$url = (empty($_SERVER['HTTPS']) ? 'http' : 'https') . '://' . $_SERVER['HTTP_HOST'] . '/bitbucket/webhook/' . $project->getId();
|
||||
$url = PHPCI_URL . 'webhook/bitbucket/' . $project->getId();
|
||||
print ' as a "POST" service in the <a href="https://bitbucket.org/' . $project->getReference() . '/admin/services">Services</a> section of your Bitbucket repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
|
||||
break;
|
||||
}
|
||||
|
|
64
composer.lock
generated
64
composer.lock
generated
|
@ -7,16 +7,16 @@
|
|||
"packages": [
|
||||
{
|
||||
"name": "block8/b8framework",
|
||||
"version": "1.0.1",
|
||||
"version": "1.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Block8/b8framework.git",
|
||||
"reference": "0497ae34ba7ef828db23b35a1f75d4debfa7eed5"
|
||||
"reference": "f643e0d3497599016cb62611ceb9288710423121"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Block8/b8framework/zipball/0497ae34ba7ef828db23b35a1f75d4debfa7eed5",
|
||||
"reference": "0497ae34ba7ef828db23b35a1f75d4debfa7eed5",
|
||||
"url": "https://api.github.com/repos/Block8/b8framework/zipball/f643e0d3497599016cb62611ceb9288710423121",
|
||||
"reference": "f643e0d3497599016cb62611ceb9288710423121",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -50,7 +50,7 @@
|
|||
"mvc",
|
||||
"php"
|
||||
],
|
||||
"time": "2013-10-09 14:06:12"
|
||||
"time": "2014-02-24 11:25:23"
|
||||
},
|
||||
{
|
||||
"name": "ircmaxell/password-compat",
|
||||
|
@ -155,16 +155,16 @@
|
|||
},
|
||||
{
|
||||
"name": "pimple/pimple",
|
||||
"version": "v1.1.0",
|
||||
"version": "v1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fabpot/Pimple.git",
|
||||
"reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83"
|
||||
"reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fabpot/Pimple/zipball/471c7d7c52ad6594e17b8ec33efdd1be592b5d83",
|
||||
"reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83",
|
||||
"url": "https://api.github.com/repos/fabpot/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d",
|
||||
"reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -188,7 +188,9 @@
|
|||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
}
|
||||
],
|
||||
"description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
|
||||
|
@ -197,7 +199,7 @@
|
|||
"container",
|
||||
"dependency injection"
|
||||
],
|
||||
"time": "2013-09-19 04:53:08"
|
||||
"time": "2013-11-22 08:30:29"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
|
@ -288,17 +290,17 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v2.4.0",
|
||||
"version": "v2.4.2",
|
||||
"target-dir": "Symfony/Component/Console",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Console.git",
|
||||
"reference": "3c1496ae96d24ccc6c340fcc25f71d7a1ab4c12c"
|
||||
"reference": "940f217cbc3c8a33e5403e7c595495c4884400fe"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Console/zipball/3c1496ae96d24ccc6c340fcc25f71d7a1ab4c12c",
|
||||
"reference": "3c1496ae96d24ccc6c340fcc25f71d7a1ab4c12c",
|
||||
"url": "https://api.github.com/repos/symfony/Console/zipball/940f217cbc3c8a33e5403e7c595495c4884400fe",
|
||||
"reference": "940f217cbc3c8a33e5403e7c595495c4884400fe",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -328,7 +330,9 @@
|
|||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
|
@ -337,21 +341,21 @@
|
|||
],
|
||||
"description": "Symfony Console Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-11-27 09:10:40"
|
||||
"time": "2014-02-11 13:52:09"
|
||||
},
|
||||
{
|
||||
"name": "symfony/yaml",
|
||||
"version": "v2.4.0",
|
||||
"version": "v2.4.2",
|
||||
"target-dir": "Symfony/Component/Yaml",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/Yaml.git",
|
||||
"reference": "1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5"
|
||||
"reference": "bb6ddaf8956139d1b8c360b4b713ed0138e876b3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5",
|
||||
"reference": "1ae235a1b9d3ad3d9f3860ff20acc072df95b7f5",
|
||||
"url": "https://api.github.com/repos/symfony/Yaml/zipball/bb6ddaf8956139d1b8c360b4b713ed0138e876b3",
|
||||
"reference": "bb6ddaf8956139d1b8c360b4b713ed0138e876b3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -375,7 +379,9 @@
|
|||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
"email": "fabien@symfony.com",
|
||||
"homepage": "http://fabien.potencier.org",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
|
@ -384,22 +390,22 @@
|
|||
],
|
||||
"description": "Symfony Yaml Component",
|
||||
"homepage": "http://symfony.com",
|
||||
"time": "2013-11-26 16:40:27"
|
||||
"time": "2014-01-07 13:28:54"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "phpspec/prophecy",
|
||||
"version": "v1.0.4",
|
||||
"version": "1.1.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpspec/prophecy.git",
|
||||
"reference": "79d9c8bd94801bffbf9b56964f6438762da6d8cd"
|
||||
"reference": "976a65af02a2a0e17ce6c949f7b43437205628bb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/79d9c8bd94801bffbf9b56964f6438762da6d8cd",
|
||||
"reference": "79d9c8bd94801bffbf9b56964f6438762da6d8cd",
|
||||
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/976a65af02a2a0e17ce6c949f7b43437205628bb",
|
||||
"reference": "976a65af02a2a0e17ce6c949f7b43437205628bb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require-dev": {
|
||||
|
@ -408,7 +414,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
"dev-master": "1.1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
@ -441,7 +447,7 @@
|
|||
"spy",
|
||||
"stub"
|
||||
],
|
||||
"time": "2013-08-10 11:11:45"
|
||||
"time": "2014-01-24 11:03:43"
|
||||
},
|
||||
{
|
||||
"name": "phpspec/prophecy-phpunit",
|
||||
|
|
Loading…
Reference in a new issue