Example #1
0
 /**
  * Upgrade the given bundles for the application.
  *
  * @param  array  $bundles
  * @return void
  */
 public function upgrade($bundles)
 {
     if (count($bundles) == 0) {
         $bundles = Bundle::names();
     }
     foreach ($bundles as $name) {
         if (!Bundle::exists($name)) {
             echo "Bundle [{$name}] is not installed!";
             continue;
         }
         // First we want to retrieve the information for the bundle, such as
         // where it is currently installed. This will allow us to upgrade
         // the bundle into it's current installation path.
         $location = Bundle::path($name);
         // If the bundle exists, we will grab the data about the bundle from
         // the API so we can make the right bundle provider for the bundle,
         // since we don't know the provider used to install.
         $response = $this->retrieve($name);
         if ($response['status'] == 'not-found') {
             continue;
         }
         // Once we have the bundle information from the API, we'll simply
         // recursively delete the bundle and then re-download it using
         // the correct provider assigned to the bundle.
         File::rmdir($location);
         $this->download($response['bundle'], $location);
         echo "Bundle [{$name}] has been upgraded!" . PHP_EOL;
     }
 }
Example #2
0
 /**
  * Generate documentation for a given bundles.  If no bundles are provided
  * documentation will be generated for all registered bundles.
  * 
  * @param  array  $bundles
  * @return void
  */
 public function bundle(array $bundles = array())
 {
     // If no bundles are provided documentation will be generated for all
     // registered bundles.
     if (count($bundles) === 0) {
         $bundles = Bundle::names();
     }
     // Remove any bundles that have not been registered, and give a
     // warning for each one we come across.
     $bundles = array_filter($bundles, function ($name) {
         if (!Bundle::exists($name)) {
             if ($name == DEFAULT_BUNDLE) {
                 return true;
             }
             echo "Bundle [{$name}] is not registered.", PHP_EOL;
             return false;
         }
         return true;
     });
     // If there are no registered bundles then exit with a message
     if (count($bundles) === 0) {
         echo PHP_EOL, "Please register your bundles and try again.", PHP_EOL;
         return;
     }
     // Get the options
     $options = $this->config(array_map(array('Bundle', 'path'), $bundles));
     // Run ApiGen
     $this->apigen($options);
 }
Example #3
0
 /**
  * Delete a bundle's assets from the public directory
  *
  * @param  string  $bundle
  * @return void
  */
 public function unpublish($bundle)
 {
     if (!Bundle::exists($bundle)) {
         echo "Bundle [{$bundle}] is not registered.";
         return;
     }
     File::rmdir(path('public') . 'bundles' . DS . $bundle);
     echo "Assets deleted for bundle [{$bundle}]." . PHP_EOL;
 }
Example #4
0
 /**
  * Publish a bundle's assets to the public directory.
  *
  * @param  string  $bundle
  * @return void
  */
 public function publish($bundle)
 {
     if (!Bundle::exists($bundle)) {
         echo "Bundle [{$bundle}] is not registered.";
         return;
     }
     $path = Bundle::path($bundle);
     $this->move($path . 'public', path('public') . 'bundles' . DS . $bundle);
     echo "Assets published for bundle [{$bundle}]." . PHP_EOL;
 }
Example #5
0
 /**
  * Run a CLI task with the given arguments.
  *
  * <code>
  *		// Call the migrate artisan task
  *		Command::run(array('migrate'));
  *
  *		// Call the migrate task with some arguments
  *		Command::run(array('migrate:rollback', 'bundle-name'))
  * </code>
  *
  * @param  array  $arguments
  * @return void
  */
 public static function run($arguments = array())
 {
     static::validate($arguments);
     list($bundle, $task, $method) = static::parse($arguments[0]);
     // If the task exists within a bundle, we will start the bundle so that any
     // dependencies can be registered in the application IoC container. If the
     // task is registered in the container,  we'll resolve it.
     if (Bundle::exists($bundle)) {
         Bundle::start($bundle);
     }
     $task = static::resolve($bundle, $task);
     // Once the bundle has been resolved, we'll make sure we could actually
     // find that task, and then verify that the method exists on the task
     // so we can successfully call it without a problem.
     if (is_null($task)) {
         throw new \Exception("Sorry, I can't find that task.");
     }
     if (is_callable(array($task, $method))) {
         $task->{$method}(array_slice($arguments, 1));
     } else {
         throw new \Exception("Sorry, I can't find that method!");
     }
 }
Example #6
0
 /**
  * Create a new module instance.
  *
  * <code>
  *      // Create a new module instance
  *      $module = new Modules\Module('registration');
  *
  *      // Create a new module instance with a path
  *      $module = new Modules\Module('registration', 'registration/extended');
  *
  *      // Create a new module instance with a full path
  *      $module = new Modules\Module('registration', 'path: /var/www/project/registration');
  * </code>
  *
  * @param  string  $module
  * @param  string  $path
  * @return void
  */
 public function __construct($module_slug, $path = null)
 {
     $this->slug = $module_slug;
     $ins = \Laravel\Config::get('installed_modules.' . $module_slug);
     $this->installed = isset($ins) and !empty($ins) ? true : false;
     $this->enabled = \Laravel\Bundle::exists($this->slug);
     $this->installer = Installer::make($module_slug);
     // if path starts with "path: "
     // its a custom path
     if (!isset($path)) {
         $this->path = path('bundle') . $this->slug . DS;
     } else {
         if (starts_with($path, 'path: ')) {
             $this->path = substr($path, 6);
         } else {
             // sets the path to modules
             // folder + path
             // module with different folder name?
             $this->path = path('bundle') . $path;
         }
     }
     // If a session driver has been specified, we will bind an instance of the
     // module error message container. If an error instance
     // exists in the session, we will use that instance.
     if (!isset($this->errors)) {
         if (Session::started() and Session::has('errors')) {
             $this->errors = Session::get('errors');
         } else {
             $this->errors = new Messages();
         }
     }
 }