diff options
Diffstat (limited to 'source/Command/Install.php')
-rw-r--r-- | source/Command/Install.php | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/source/Command/Install.php b/source/Command/Install.php new file mode 100644 index 0000000..936ae69 --- /dev/null +++ b/source/Command/Install.php @@ -0,0 +1,96 @@ +<?php +/** + * @author stev leibelt <artodeto@bazzline.net> + * @since 2014-08-17 + */ + +/** + * Class Command_Install + */ +class Command_Install extends Command_AbstractCommand +{ + /** + * @var Configuration_Path + */ + private $pathConfiguration; + + /** + * @var Filesystem + */ + private $filesystem; + + /** + * @param Configuration_Path $configuration + */ + public function setPathConfiguration(Configuration_Path $configuration) + { + $this->pathConfiguration = $configuration; + } + + /** + * @param Filesystem $filesystem + */ + public function setFilesystem(Filesystem $filesystem) + { + $this->filesystem = $filesystem; + } + + /** + * @throws Exception + * @todo implement setup of database (check if connection is available, split it up in multiple steps (Command_Install_Files, Command_Install_Database) + */ + public function execute() + { + $identifierToPaths = array( + 'channels' => array( + 'example' => $this->pathConfiguration->getExampleChannelsFilePath(), + 'chat' => $this->pathConfiguration->getChatChannelsFilePath() + ), + 'pathConfiguration' => array( + 'example' => $this->pathConfiguration->getExampleConfigurationFilePath(), + 'chat' => $this->pathConfiguration->getChatConfigurationFilePath() + ), + 'users' => array( + 'example' => $this->pathConfiguration->getExampleUsersFilePath(), + 'chat' => $this->pathConfiguration->getChatUsersFilePath() + ), + 'version' => array( + 'example' => $this->pathConfiguration->getExampleVersionFilePath(), + 'chat' => $this->pathConfiguration->getChatVersionFilePath() + ), + ); + + foreach ($identifierToPaths as $identifier => $paths) { + if (!$this->filesystem->isFile($paths['chat'])) { + $directoryPath = dirname($paths['chat']); + + if (!$this->filesystem->isDirectory($directoryPath)) { + $this->output->addLine('no directory available at "' . $directoryPath . '", will create one ...'); + $this->filesystem->createDirectory($directoryPath); + } + $this->output->addLine('no ' . $identifier . ' file available, will create one ...'); + $this->filesystem->copy( + $paths['example'], + $paths['chat'] + ); + } else { + $this->output->addLine($identifier . ' file available, nothing to do ...'); + } + } + } + + /** + * @return array + */ + public function getUsage() + { + return array(); + } + + /** + * @throws Exception + */ + public function verify() + { + } +}
\ No newline at end of file |