1
0
Fork 0
mirror of https://github.com/Oreolek/kohana-migrations.git synced 2024-06-26 03:40:54 +03:00
Go to file
2010-12-30 04:08:32 +00:00
classes Updating README and changing controller to throw the right exception 2010-12-30 04:08:32 +00:00
config/minion Filling out the environment config option in db:migrate 2010-12-29 01:17:51 +00:00
tests Migration IDs are now {location}:{timestamp} 2010-12-29 03:03:00 +00:00
views/minion Changing migration system so that the migration manager is responsible for organising dry-runs 2010-12-30 03:22:32 +00:00
init.php Initial import 2010-12-24 15:52:03 +00:00
README.md Updating README and changing controller to throw the right exception 2010-12-30 04:08:32 +00:00

Minion

Minion is a module for the Kohana framework which makes it easier to run various tasks from the cli.

The original "need" behind Minion was the lack of a good db migrations system, capable of selecting migrations from multiple locations (i.e. different modules).

The system is inspired by ruckusing, which had a nice system for defining tasks but lacked the desired flexibility.

Getting Started

First off, download and enable the module in your bootstrap

Then you can run minion like so:

php index.php --uri=minion/{task}

To view a list of minion tasks, run

php index.php --uri=minion/help

To view help for a specific minion task run

php index.php --uri=minion/help/{task}

For security reasons Minion will only run from the cli. Attempting to access it over http will cause a Kohana_Exception to be thrown.

Writing your own tasks

All minion tasks must be located in classes/minion/task/. They can be in any module, thus allowing you to ship custom minion tasks with your own module / product.

Each task must extend the abstract class Minion_Task and implement Minion_Task::execute().

See Minion_Task for more details.

Documentation

Code should be commented well enough not to need documentation, and minion can extract a class' doccomment to use as documentation on the cli.

Testing

This module is unittested using the unittest module. You can use the minion group to only run minion tests.

i.e.

phpunit --group minion

Feel free to contribute tests(!), they can be found in the tests/minion directory. :)

License

This is licensed under the same license as kohana.

This project is not endorsed by the Kohana Framework project.

FAQ

Can't I just create my own controllers instead of creating "tasks"

Yes, controllers offer just as much control as tasks, however there are a number of advantages to tasks:

  • They can only be run via command line or through code (see note about http)
  • All the groundwork for interacting with the user on the command line is already in place, you just need to take advantage of it
  • It provides a uniform way to access and perform tasks on the command line, rather than creating an elaborate collection of controllers while trying to restrict access to them. If you create a module that requires command line interaction then you just ship a minion task with it and users will be able to start using it with minimal setup & configuration