/**
  * {@inheritdoc}
  */
 public function __construct(array $values = array())
 {
     parent::__construct($values);
     $this['app_name'] = 'UNKNOWN';
     $this['app_version'] = 'UNKNOWN';
     $this['config_file'] = '{base}/config.json';
     $this['config_defaults'] = array();
     $this['working_directory_sub_folder'] = '.console-kit';
     $this['working_directory'] = function ($c) {
         $working_directory = new WorkingDirectory($c['working_directory_sub_folder']);
         return $working_directory->get();
     };
     $this['config_editor'] = function ($c) {
         return new ConfigEditor(str_replace('{base}', $c['working_directory'], $c['config_file']), $c['config_defaults']);
     };
     $this['input'] = function () {
         return new ArgvInput();
     };
     $this['output'] = function () {
         return new ConsoleOutput();
     };
     $this['io'] = function ($c) {
         return new ConsoleIO($c['input'], $c['output'], $c['helper_set']);
     };
     // Would be replaced with actual HelperSet from extended Application class.
     $this['helper_set'] = function () {
         return new HelperSet();
     };
     $this['container_helper'] = function ($c) {
         return new ContainerHelper($c);
     };
 }
 /**
  * Returns working directory.
  *
  * @return string
  */
 protected function getWorkingDirectory()
 {
     $sub_folder = array_key_exists('working_directory', $_SERVER) ? $_SERVER['working_directory'] : '';
     if (!strlen($sub_folder)) {
         $this->fail('Please set "working_directory" environment variable before calling ' . __METHOD__ . '.');
     }
     $working_directory = new WorkingDirectory($sub_folder);
     return $working_directory->get();
 }