<?php
class Mage_Task_Factory
{
    /**
     * 
     * 
     * @param string $taskName
     * @return Mage_Task_TaskAbstract
     */
    public static function get($taskName, $taskConfig)
    {
        $instance = null;
        
        if (strpos($taskName, '/') === false) {
            Mage_Autoload::loadUserTask($taskName);
            $className = 'Task_' . ucfirst($taskName);
            $instance = new $className($taskConfig);

        } else {
            $taskName = str_replace(' ', '_', ucwords(str_replace('/', ' ', $taskName)));
            $className = 'Mage_Task_BuiltIn_' . $taskName;
            $instance = new $className($taskConfig);
        }

        assert($instance instanceOf Mage_Task_TaskAbstract);
        return $instance;
    }
}