/** * * Configure the root directory for an object implementing the RootDirectory interface. * * @params \apf\iface\RootDirectoryInterface An object implementing the root directory interface. * @params \apf\iface\Log An object implementing the log interface. * */ public static function configureSubDirectories(SubDirectoriesInterface &$config, LogInterface &$log) { do { try { Cmd::clear(); $log->info('[ Please specify the subs directory ]'); $log->repeat('-', 80, 'light_purple'); $log->info('Press \'<\' to go back | Press \'!\' to reset this option'); $log->repeat('-', 80, 'light_purple'); $dir = $config->getSubsDirectory(); if ($dir) { $log->success("Current value: {$config->getSubsDirectory()}"); $log->repeat('-', 80, 'light_purple'); } if (!$dir) { $dir = new Dir(realpath(getcwd())); if ($config instanceof NameableInterface) { $dir->addPath($config->getName()); } } $opt = trim(Cmd::readWithDefault('>', $dir, $log)); if ($opt == '<') { return; } if ($opt == '!') { $config->unsetSubsDirectory(); continue; } $config->setSubsDirectory(new Dir($opt)); } catch (\Exception $e) { $log->error($e->getMessage()); Cmd::readInput('Press enter to continue ...'); } } while (!$config->getSubsDirectory()); return TRUE; }