示例#1
0
 protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
 {
     $names = StringTools::Delimit($input->getArgument('name'), ',');
     $user = $input->getArgument('user');
     $group = $input->getArgument('group');
     $parent = $input->getOption('parent');
     // TODO support
     if (!empty($parent)) {
         var_dump($parent);
     }
     foreach ($names as $website) {
         // adding website
         //$website = $name['text'];
         LogCLI::Message('Adding website: ' . $website, 0);
         LogCLI::MessageResult('Group and user: '******'/' . $user, 2, LogCLI::INFO);
         $path = Paths::$db . Paths::$separator . $group . Paths::$separator . $user . Paths::$separator;
         if (file_exists($path)) {
             if (!file_exists($path . $website . '.yml') && Paths::getFullPath($website) === false) {
                 FileOperation::CreateEmptyFile($path . $website . '.yml');
                 LogCLI::Result(LogCLI::OK);
             } else {
                 LogCLI::Fail('Website ' . $website . ', under ' . $group . '/' . $user . ' already exists!');
                 LogCLI::Result(LogCLI::FAIL);
             }
         } else {
             LogCLI::Fail('Group and/or user ' . $group . '/' . $user . ' does not exist!');
             LogCLI::Result(LogCLI::FAIL);
         }
     }
 }
示例#2
0
文件: Add.php 项目: niieani/napkin
 protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
 {
     $names = StringTools::TypeList($input->getArgument('name'), '@', ',');
     $userorgroup = $input->getArgument('userorgroup');
     //        $group = $input->getArgument('group');
     //        $group =
     //        $directories = $input->getArgument('directories');
     //        $files = array();
     //ApplicationsDB::LoadAll();
     foreach ($names as $name) {
         if ($name['exclamation'] !== false) {
             // adding user
             LogCLI::MessageResult('Exclamation: ' . $name['exclamation'], 2, LogCLI::INFO);
             $username = $name['text'];
             LogCLI::Message('Adding user: '******'Creating directory: ' . $structure, 2, LogCLI::INFO);
             if (@mkdir($structure, 0755, true)) {
                 LogCLI::Result(LogCLI::OK);
             } else {
                 LogCLI::Result(LogCLI::FAIL);
                 LogCLI::Fail('User ' . $username . ' already exists!');
                 //LogCLI::Fail($e->getMessage());
             }
         } else {
             // adding website
             $website = $name['text'];
             LogCLI::Message('Adding website: ' . $website, 0);
             $username = !empty($userorgroup) ? $userorgroup : Paths::$defaultUser;
             $group = Paths::$defaultGroup;
             LogCLI::MessageResult('User and group: ' . $username . '/' . $group, 2, LogCLI::INFO);
             $path = Paths::$db . Paths::$separator . $group . Paths::$separator . $username . Paths::$separator;
             if (file_exists($path)) {
                 if (!file_exists($path . $website . '.yml') && Paths::getFullPath($website) === false) {
                     FileOperation::CreateEmptyFile($path . $website . '.yml');
                     LogCLI::Result(LogCLI::OK);
                 } else {
                     LogCLI::Result(LogCLI::FAIL);
                     LogCLI::Fail('Website ' . $website . ', under ' . $group . '/' . $username . ' already exists!');
                 }
             } else {
                 LogCLI::Result(LogCLI::FAIL);
                 LogCLI::Fail('Group and/or user ' . $group . '/' . $username . ' does not exist!');
             }
         }
     }
 }
示例#3
0
 public static function Add($arguments)
 {
     foreach (StringTools::TypeList($arguments['name'], '@') as $argument) {
         $name = $argument['text'];
         if ($argument['exclamation'] !== false) {
             LogCLI::MessageResult('Exclamation: ' . $argument['exclamation'], 2, LogCLI::INFO);
             $username = $name;
             LogCLI::Message('Adding user: '******'name2']) ? $arguments['name2'] : Paths::$defaultGroup;
             $structure = Paths::$db . Paths::$separator . $group . Paths::$separator . $username;
             LogCLI::MessageResult('Creating directory: ' . $structure, 2, LogCLI::INFO);
             if (@mkdir($structure, 0755, true)) {
                 LogCLI::Result(LogCLI::OK);
             } else {
                 LogCLI::Result(LogCLI::FAIL);
                 LogCLI::Fail('User ' . $username . ' already exists!');
                 //LogCLI::Fail($e->getMessage());
             }
         } else {
             // adding website
             $website = $name;
             LogCLI::Message('Adding website: ' . $website, 0);
             $username = isset($arguments['name2']) ? $arguments['name2'] : Paths::$defaultUser;
             $group = Paths::$defaultGroup;
             LogCLI::MessageResult('Username and group: ' . $username . '/' . $group, 2, LogCLI::INFO);
             $path = Paths::$db . Paths::$separator . $group . Paths::$separator . $username . Paths::$separator;
             if (file_exists($path)) {
                 if (!file_exists($path . $website . '.yml') && Paths::getFullPath($website) === false) {
                     FileOperation::CreateEmptyFile($path . $website . '.yml');
                     LogCLI::Result(LogCLI::OK);
                 } else {
                     LogCLI::Result(LogCLI::FAIL);
                     LogCLI::Fail('Website ' . $website . ', under ' . $group . '/' . $username . ' already exists!');
                 }
             } else {
                 LogCLI::Result(LogCLI::FAIL);
                 LogCLI::Fail('Group and/or user ' . $group . '/' . $username . ' does not exist!');
             }
         }
     }
 }
示例#4
0
 /**
  * @param string $file          path to a YAML file
  * @param string|bool $path     start the merge at designated settings path
  * @param bool $applyDefaults
  * @param bool $mergeDefaults
  * @param bool $createNewIfNonexistant
  * @param bool $addFilename
  * @return void
  */
 public function mergeFromYAML($file, $path = false, $applyDefaults = false, $mergeDefaults = true, $createNewIfNonexistant = false, $addFilename = false)
 {
     LogCLI::Message('Loading file: ' . LogCLI::BLUE . $file . LogCLI::RESET, 1);
     if (file_exists($file)) {
         LogCLI::Result(LogCLI::OK);
         LogCLI::Message('Parsing YAML file: ' . LogCLI::BLUE . $file . LogCLI::RESET, 1);
         try {
             //$config = YAML::load($file);
             $config = Yaml::parse($file);
             //                 if the file is empty create an empty array:
             //                    $config = array();
             if (!empty($config)) {
                 if ($path === false) {
                     $this->DB = ArrayTools::MergeArrays($this->DB, $config);
                     if ($mergeDefaults === true) {
                         $this->mergeDefinitionsDB($config, $this->defaultsDefinitions, $applyDefaults, 'defaults');
                     }
                 } else {
                     if ($addFilename === true) {
                         $fileInfo = FileOperation::pathinfo_utf($file);
                         $config['filename'] = $fileInfo['filename'];
                         //$config['filename'] = $file;
                     }
                     if (!isset($config['template']) && (!isset($config['disabled']) || $config['disabled'] == false)) {
                         $iteration = $this->mergeOneIterativeByPath($path, $config);
                         //var_dump($this->defaultsDefinitions);
                         /**
                          * applying parents as defaults
                          */
                         if (isset($config['parent'])) {
                             foreach ((array) $config['parent'] as $parentName) {
                                 if (is_array($parentFiles = FileOperation::findFile($parentName, Paths::$db))) {
                                     if (count($parentFiles) > 1) {
                                         LogCLI::MessageResult('You have to be more specific in the way you specify the parent, found more than one file under this name: ' . $parentName, 0, LogCLI::INFO);
                                     } else {
                                         $parentFile =& current($parentFiles);
                                         LogCLI::Message('Parent definition found: ' . LogCLI::BLUE . $parentFile . LogCLI::RESET . ', parsing and merging.', 2);
                                         if (!isset($this->parentDefinitions[$parentFile])) {
                                             $parentConfig = array('parent' => Yaml::parse($parentFile));
                                             $this->parentDefinitions[$parentFile] = array();
                                             $this->mergeDefinitionsDB($parentConfig, $this->parentDefinitions[$parentFile], false, 'parent');
                                         }
                                         $this->applyDefaults($this->DB, $this->parentDefinitions[$parentFile], $path . '/' . $iteration, 'parent', true, false);
                                         LogCLI::Result(LogCLI::OK);
                                     }
                                     //var_dump($this->parentDefinitions);
                                 }
                             }
                         }
                         if ($applyDefaults === true) {
                             $this->applyDefaults($this->DB, $this->defaultsDefinitions, $path . '/' . $iteration, 'defaults', false, false);
                         }
                     }
                 }
                 LogCLI::MessageResult('Settings DB populated with new data!', 5, LogCLI::INFO);
             } else {
                 LogCLI::MessageResult('File empty, ignoring', 5, LogCLI::INFO);
             }
             LogCLI::Result(LogCLI::OK);
         } catch (\Exception $e) {
             LogCLI::Result(LogCLI::FAIL);
             LogCLI::Fail($e->getMessage());
         }
     } else {
         LogCLI::Result(LogCLI::FAIL);
         LogCLI::Fail("No such file: {$file}");
         if ($createNewIfNonexistant === true) {
             LogCLI::Message('Creating a new empty file.', 0);
             try {
                 //fclose(fopen($file, 'x'));
                 FileOperation::CreateEmptyFile($file);
                 $this->mergeFromYAML($file, $path, $applyDefaults, $mergeDefaults, false);
                 LogCLI::Result(LogCLI::OK);
             } catch (\Exception $e) {
                 LogCLI::Result(LogCLI::FAIL);
                 LogCLI::Fail($e->getMessage());
             }
         }
     }
 }