protected function exec($cmd, $task, $args = null)
    {
        $script = __DIR__.'/../../exec/'.$cmd.'/'.$task.'.sh';
        if (!file_exists($script)) {
            die('Producer >  INTERNAL ERROR MISSING SCRIPT');
        }

        $params = '';

        if ($args && count($args) > 0) {
            foreach ($args as &$value) {
                $value = $this->escapeParam($value);
            }

            $params = implode(' ', $args);
        }

        $rawCommand = $script.' '
            .$this->escapeParam($this->cwd).' '
            .$this->escapeParam($this->projectsDir).' '.$params;

        $output = shell_exec($rawCommand);

        if (!$this->silent) {
            echo $output;
        }
    }