Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
UserAdminV2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
庄欣
UserAdminV2
Commits
ea42fe75
Commit
ea42fe75
authored
Feb 03, 2012
by
Taylor Otwell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
working on bundle upgrade routine.
parent
b1f12b19
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
115 additions
and
91 deletions
+115
-91
laravel/cli/dependencies.php
+3
-1
laravel/cli/tasks/bundle/bundler.php
+97
-10
laravel/cli/tasks/bundle/providers/github.php
+5
-62
laravel/cli/tasks/bundle/providers/provider.php
+10
-18
No files found.
laravel/cli/dependencies.php
View file @
ea42fe75
...
@@ -22,7 +22,9 @@ IoC::register('task: migrate', function()
...
@@ -22,7 +22,9 @@ IoC::register('task: migrate', function()
*/
*/
IoC
::
register
(
'task: bundle'
,
function
()
IoC
::
register
(
'task: bundle'
,
function
()
{
{
return
new
Tasks\Bundle\Bundler
;
$repository
=
IoC
::
resolve
(
'bundle.repository'
);
return
new
Tasks\Bundle\Bundler
(
$repository
);
});
});
/**
/**
...
...
laravel/cli/tasks/bundle/bundler.php
View file @
ea42fe75
...
@@ -7,6 +7,24 @@ use Laravel\CLI\Tasks\Task;
...
@@ -7,6 +7,24 @@ use Laravel\CLI\Tasks\Task;
class
Bundler
extends
Task
{
class
Bundler
extends
Task
{
/**
/**
* The bundle API repository.
*
* @var Repository
*/
protected
$repository
;
/**
* Create a new bundle manager task.
*
* @param Repository $repository
* @return void
*/
public
function
__construct
(
$repository
)
{
$this
->
repository
=
$repository
;
}
/**
* Install the given bundles into the application.
* Install the given bundles into the application.
*
*
* @param array $bundles
* @param array $bundles
...
@@ -30,9 +48,41 @@ class Bundler extends Task {
...
@@ -30,9 +48,41 @@ class Bundler extends Task {
// Each bundle provider implements the Provider interface and
// Each bundle provider implements the Provider interface and
// is repsonsible for retrieving the bundle source from its
// is repsonsible for retrieving the bundle source from its
// hosting party and installing it into the application.
// hosting party and installing it into the application.
$provider
=
"bundle.provider:
{
$bundle
[
'provider'
]
}
"
;
$this
->
download
(
$bundle
,
$this
->
path
(
$bundle
));
echo
"Bundle [
{
$bundle
[
'name'
]
}
] has been installed!"
.
PHP_EOL
;
}
}
/**
* Upgrade the given bundles for the application.
*
* @param array $bundles
* @return void
*/
public
function
upgrade
(
$bundles
)
{
foreach
(
$bundles
as
$name
)
{
$bundle
=
Bundle
::
get
(
$name
);
if
(
is_nulL
(
$bundle
))
{
throw
new
\Exception
(
"Bundle [
{
$name
}
] is not installed!"
);
}
$data
=
$this
->
retrieve
(
$bundle
);
if
(
$response
[
'status'
]
==
'not-found'
)
{
continue
;
}
IoC
::
resolve
(
$provider
)
->
install
(
$bundle
);
File
::
rmdir
(
$bundle
->
location
);
$this
->
download
(
$bundle
,
$bundle
->
location
);
echo
"Bundle [
{
$bundle
[
'name'
]
}
] has been upgraded!"
.
PHP_EOL
;
}
}
}
}
...
@@ -67,20 +117,13 @@ class Bundler extends Task {
...
@@ -67,20 +117,13 @@ class Bundler extends Task {
{
{
$responses
=
array
();
$responses
=
array
();
$repository
=
IoC
::
resolve
(
'bundle.repository'
);
foreach
(
$bundles
as
$bundle
)
foreach
(
$bundles
as
$bundle
)
{
{
// First we'll call the bundle repository to gather the bundle data
// First we'll call the bundle repository to gather the bundle data
// array, which contains all of the information needed to install
// array, which contains all of the information needed to install
// the bundle into the application. We'll verify that the bundle
// the bundle into the application. We'll verify that the bundle
// exists and the API is responding for each bundle.
// exists and the API is responding for each bundle.
$response
=
$repository
->
get
(
$bundle
);
$response
=
$this
->
retrieve
(
$bundle
);
if
(
!
$response
)
{
throw
new
\Exception
(
"The bundle API is not responding."
);
}
if
(
$response
[
'status'
]
==
'not-found'
)
if
(
$response
[
'status'
]
==
'not-found'
)
{
{
...
@@ -101,4 +144,47 @@ class Bundler extends Task {
...
@@ -101,4 +144,47 @@ class Bundler extends Task {
return
$responses
;
return
$responses
;
}
}
/**
* Install a bundle using a provider.
*
* @param string $bundle
* @param string $path
* @return void
*/
protected
function
download
(
$bundlem
,
$path
)
{
$provider
=
"bundle.provider:
{
$bundle
[
'provider'
]
}
"
;
IoC
::
resolve
(
$provider
)
->
install
(
$bundle
,
$path
);
}
/**
* Retrieve a bundle from the repository.
*
* @param string $bundle
* @return array
*/
protected
function
retrieve
(
$bundle
)
{
$response
=
$this
->
repository
->
get
(
$bundle
);
if
(
!
$response
)
{
throw
new
\Exception
(
"The bundle API is not responding."
);
}
return
$response
;
}
/**
* Return the path for a given bundle.
*
* @param array $bundle
* @return string
*/
protected
function
path
(
$bundle
)
{
return
array_get
(
$bundle
,
'path'
,
$bundle
[
'name'
]);
}
}
}
\ No newline at end of file
laravel/cli/tasks/bundle/providers/github.php
View file @
ea42fe75
<?php
namespace
Laravel\CLI\Tasks\Bundle\Providers
;
<?php
namespace
Laravel\CLI\Tasks\Bundle\Providers
;
use
Laravel\Request
;
use
Laravel\Request
;
class
Github
extends
Provider
{
class
Github
extends
Provider
{
...
@@ -8,70 +6,14 @@ class Github extends Provider {
...
@@ -8,70 +6,14 @@ class Github extends Provider {
* Install the given bundle into the application.
* Install the given bundle into the application.
*
*
* @param string $bundle
* @param string $bundle
* @param string $path
* @return void
* @return void
*/
*/
public
function
install
(
$bundle
)
public
function
install
(
$bundle
,
$path
)
{
$method
=
(
Request
::
server
(
'cli.git'
))
?
'submodule'
:
'zipball'
;
$this
->
$method
(
$bundle
);
}
/**
* Install a Github hosted bundle from Zip.
*
* @param string $bundle
* @return void
*/
protected
function
zipball
(
$bundle
)
{
{
$url
=
"http://nodeload.github.com/
{
$bundle
[
'location'
]
}
/zipball/master"
;
$url
=
"http://nodeload.github.com/
{
$bundle
[
'location'
]
}
/zipball/master"
;
parent
::
zipball
(
$bundle
,
$url
,
true
);
parent
::
zipball
(
$url
,
$bundle
,
$path
);
echo
"Bundle [
{
$bundle
[
'name'
]
}
] has been installed!"
.
PHP_EOL
;
}
/**
* Install a Github hosted bundle using submodules.
*
* @param string $bundle
* @return void
*/
protected
function
submodule
(
$bundle
)
{
$repository
=
"git@github.com:
{
$bundle
[
'location'
]
}
.git"
;
$this
->
directory
(
$bundle
);
// We need to just extract the basename of the bundle path when
// adding the submodule. Of course, we can't add a submodule to
// a location outside of the Git repository, so we don't need
// the full bundle path.
$root
=
basename
(
path
(
'bundle'
))
.
'/'
;
passthru
(
'git submodule add '
.
$repository
.
' '
.
$root
.
$this
->
path
(
$bundle
));
passthru
(
'git submodule update'
);
}
/**
* Create the path to the bundle's dirname.
*
* @param array $bundle
* @return void
*/
protected
function
directory
(
$bundle
)
{
// If the installation target directory doesn't exist, we will create
// it recursively so that we can properly install the bundle to the
// correct path in the application.
$target
=
dirname
(
path
(
'bundle'
)
.
$this
->
path
(
$bundle
));
if
(
!
is_dir
(
$target
))
{
mkdir
(
$target
,
0777
,
true
);
}
}
}
}
}
\ No newline at end of file
laravel/cli/tasks/bundle/providers/provider.php
View file @
ea42fe75
...
@@ -8,23 +8,27 @@ abstract class Provider {
...
@@ -8,23 +8,27 @@ abstract class Provider {
* Install the given bundle into the application.
* Install the given bundle into the application.
*
*
* @param string $bundle
* @param string $bundle
* @param string $path
* @return void
* @return void
*/
*/
abstract
public
function
install
(
$bundle
);
abstract
public
function
install
(
$bundle
,
$path
);
/**
/**
* Install a bundle from by downloading a Zip.
* Install a bundle from by downloading a Zip.
*
*
* @param array $bundle
* @param string $url
* @param string $url
* @param array $bundle
* @param string $path
* @return void
* @return void
*/
*/
protected
function
zipball
(
$
bundle
,
$url
)
protected
function
zipball
(
$
url
,
$bundle
,
$path
)
{
{
$work
=
path
(
'storage'
)
.
'work/'
;
// When installing a bundle from a Zip archive, we'll first clone
// When installing a bundle from a Zip archive, we'll first clone
// down the bundle zip into the bundles "working" directory so
// down the bundle zip into the bundles "working" directory so
// we have a spot to do all of our bundle extration work.
// we have a spot to do all of our bundle extration work.
$target
=
path
(
'storage'
)
.
'work/
laravel-bundle.zip'
;
$target
=
$work
.
'
laravel-bundle.zip'
;
File
::
put
(
$target
,
file_get_contents
(
$url
));
File
::
put
(
$target
,
file_get_contents
(
$url
));
...
@@ -36,9 +40,9 @@ abstract class Provider {
...
@@ -36,9 +40,9 @@ abstract class Provider {
// into the working directory. By convention, we expect the
// into the working directory. By convention, we expect the
// archive to contain one root directory, and all of the
// archive to contain one root directory, and all of the
// bundle contents should be stored in that directory.
// bundle contents should be stored in that directory.
$zip
->
extractTo
(
path
(
'storage'
)
.
'work'
);
$zip
->
extractTo
(
$work
);
$latest
=
File
::
latest
(
dirname
(
$target
)
)
->
getRealPath
();
$latest
=
File
::
latest
(
$work
)
->
getRealPath
();
@
chmod
(
$latest
,
0777
);
@
chmod
(
$latest
,
0777
);
...
@@ -52,15 +56,4 @@ abstract class Provider {
...
@@ -52,15 +56,4 @@ abstract class Provider {
@
unlink
(
$target
);
@
unlink
(
$target
);
}
}
/**
* Return the path for a given bundle.
*
* @param array $bundle
* @return string
*/
protected
function
path
(
$bundle
)
{
return
array_get
(
$bundle
,
'path'
,
$bundle
[
'name'
]);
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment