diff options
author | Andrew Manning <tamanning@zoho.com> | 2016-05-03 21:49:52 -0400 |
---|---|---|
committer | Andrew Manning <tamanning@zoho.com> | 2016-05-03 21:49:52 -0400 |
commit | 5686ee13b4540bfc0ce6c40f07b6e43c3c55e9a8 (patch) | |
tree | e1dd289cf5ddcf514e5951872f5148b65422e32a | |
parent | 2db86b950e78cb01cde659f424c9c01f79edc7a4 (diff) | |
download | volse-hubzilla-5686ee13b4540bfc0ce6c40f07b6e43c3c55e9a8.tar.gz volse-hubzilla-5686ee13b4540bfc0ce6c40f07b6e43c3c55e9a8.tar.bz2 volse-hubzilla-5686ee13b4540bfc0ce6c40f07b6e43c3c55e9a8.zip |
Increased PHPGit timeout to 120 seconds for large repos. Retrieve Readme.md and render on plugins page.
-rw-r--r-- | Zotlabs/Module/Admin.php | 30 | ||||
-rw-r--r-- | library/symfony/process/PhpProcess.php | 2 | ||||
-rw-r--r-- | library/symfony/process/Process.php | 2 | ||||
-rwxr-xr-x | view/tpl/admin_plugins.tpl | 11 |
4 files changed, 33 insertions, 12 deletions
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php index d23b508f0..ddec02916 100644 --- a/Zotlabs/Module/Admin.php +++ b/Zotlabs/Module/Admin.php @@ -1671,6 +1671,7 @@ class Admin extends \Zotlabs\Web\Controller { switch($action) { case 'addrepo': + require_once('library/markdown.php'); if(array_key_exists('repoURL',$_REQUEST)) { require __DIR__ . '/../../library/PHPGit.autoload.php'; // Load PHPGit dependencies logger('Repo URL submitted: ' . $_REQUEST['repoURL']); @@ -1688,28 +1689,39 @@ class Admin extends \Zotlabs\Web\Controller { $storepath = realpath(__DIR__ . '/../../store/'); //logger('storepath: ' . $storepath); $repopath = $storepath . '/pluginrepos/' . $reponame; - + $git = new Git(); if (!file_exists($repopath)) { //logger('repopath does not exist'); if (mkdir($repopath, 0770, true)) { - //logger('repopath created'); - $git = new Git(); - //logger('new git object created'); $cloned = $git->clone($repoURL, $repopath); if (!$cloned) { logger('git clone failed'); notice('Repo coule not be cloned. Filesystem path error.'); - json_return_and_die(array('message' => 'Repo coule not be cloned. Filesystem path error.', 'success' => false)); + json_return_and_die(array('message' => 'Repo could not be cloned. Filesystem path error.', 'success' => false)); } - json_return_and_die(array('message' => 'Successfully cloned to: ' . $repopath , 'success' => true)); + //json_return_and_die(array('repo'=> $repo, 'message' => 'Successfully cloned to: ' . $repopath , 'success' => true)); } else { logger('repopath could not be created'); notice('Repo coule not be cloned. Filesystem path error.'); - json_return_and_die(array('message' => 'Repo coule not be cloned. Filesystem path error', 'success' => false)); + json_return_and_die(array('message' => 'Repo could not be cloned. Filesystem path error', 'success' => false)); + } + } + $git->setRepository($repopath); + $repo = array(); + $repo['url'] = $repoURL; + $repo['branches'] = $git->branch(['all' => true]); + $repo['objects'] = array(); + $repo['readme'] = $repo['manifest'] = null; + foreach ($git->tree('master') as $object) { + if ($object['type'] == 'blob' && (strtolower($object['file']) === 'readme.md' || strtolower($object['file']) === 'readme')) { + $repo['readme'] = Markdown($git->cat->blob($object['hash'])); + } else if ($object['type'] == 'blob' && strtolower($object['file']) === 'manifest.json') { + $repo['manifest'] = $git->cat->blob($object['hash']); } - } else { - json_return_and_die(array('message' => 'Repo already exists at: ' . $repopath, 'success' => true)); } + //logger('repo: ' . json_encode($repo)); + json_return_and_die(array('repo'=> $repo, 'message' => '', 'success' => true)); + } else { json_return_and_die(array('message' => 'No repo URL provided', 'success' => false)); } diff --git a/library/symfony/process/PhpProcess.php b/library/symfony/process/PhpProcess.php index 4a2a2625f..8333412f4 100644 --- a/library/symfony/process/PhpProcess.php +++ b/library/symfony/process/PhpProcess.php @@ -33,7 +33,7 @@ class PhpProcess extends Process * @param int $timeout The timeout in seconds * @param array $options An array of options for proc_open */ - public function __construct($script, $cwd = null, array $env = null, $timeout = 60, array $options = array()) + public function __construct($script, $cwd = null, array $env = null, $timeout = 120, array $options = array()) { $executableFinder = new PhpExecutableFinder(); if (false === $php = $executableFinder->find()) { diff --git a/library/symfony/process/Process.php b/library/symfony/process/Process.php index c1e732170..003b6b7e5 100644 --- a/library/symfony/process/Process.php +++ b/library/symfony/process/Process.php @@ -138,7 +138,7 @@ class Process * * @throws RuntimeException When proc_open is not installed */ - public function __construct($commandline, $cwd = null, array $env = null, $input = null, $timeout = 60, array $options = array()) + public function __construct($commandline, $cwd = null, array $env = null, $input = null, $timeout = 120, array $options = array()) { if (!function_exists('proc_open')) { throw new RuntimeException('The Process class relies on proc_open, which is not available on your PHP installation.'); diff --git a/view/tpl/admin_plugins.tpl b/view/tpl/admin_plugins.tpl index e10cde81d..97759f817 100755 --- a/view/tpl/admin_plugins.tpl +++ b/view/tpl/admin_plugins.tpl @@ -44,7 +44,16 @@ function(response) { $('#chat-rotator').spin(false); if (response.success) { - $('#new-repo-info').html('<h3>Repo Info</h3><p>The repo was cloned to<br>' + response.message + '</p>'); + $('#new-repo-info').html('<h3>Repo Info</h3><p>' + response.message + '</p>'); + + $('#new-repo-info').append('<h4>Branches</h4><p>'+JSON.stringify(response.repo.branches)+'</p>'); + $('#new-repo-info').append('<h4>URL</h4><p>'+response.repo.url+'</p>'); + $('#new-repo-info').append('<h4>Objects</h4><ul>'); + for(var i = 0; i<response.repo.objects.length; i++) { + $('#new-repo-info').append('<li>'+response.repo.objects[i]+'</li>'); + } + $('#new-repo-info').append('</ul>'); + $('#new-repo-info').append('<h4>Readme</h4><p>'+response.repo.readme+'</p>'); } else { window.console.log('Error adding repo :' + response['message']); } |