Ejemplo n.º 1
0
 public function handle()
 {
     $this->http = new HTTP(new Slice());
     $request = $this->request();
     $q = $request->query()->get('q');
     if (!$q) {
         $this->response(['error' => '?q must be specified!'], 500);
     }
     $repo = new Repository();
     $repo->setDriver(new DatabaseDriver(Application::getInstance()->getConnection()));
     $path_info = explode('/', $q);
     $type = $path_info[0];
     if ('locks' === $type) {
         $this->response(['locked' => $repo->isLocked()]);
         return;
     }
     if (!$type || !in_array($type, ['chunk', 'snippet', 'content', 'tv', 'template', 'category'])) {
         $this->response(['error' => 'Type must be specified!'], 500);
     }
     $pk = count($path_info) > 1 ? $path_info[1] : null;
     if ('GET' === $request->method()) {
         if (!$pk) {
             $items = $repo->getAll($type);
             $this->response(array_map(function ($item) {
                 return $item->getData();
             }, $items));
         } else {
             $this->response($repo->getOnce($type, $pk)->getData());
         }
     } elseif ('POST' === $request->method()) {
     }
 }
Ejemplo n.º 2
0
 /**
  * 1. Checkout to new branch modvert/test based on origin/test
  * or movert/develop based on origin/develop
  * 2. Load remote resources
  * 3. Show message:
  *   1. Check changes `git diff --name-only -- storage`
  *   2. Commit if has changes
  *   3. Checkout to the main branch (test/develop/feature/QUES-*)
  *   4. Merge `git merge movert/test` or `git merge movert/develop`
  *
  * Если
  */
 public function loadRemote($stage)
 {
     /** @var $resource IResource **/
     $repository = new Repository();
     $driver = new RemoteDriver($stage);
     $repository->setDriver($driver);
     if ($repository->isLocked()) {
         // If remote stage is Locked
         return $this->output->writeln('<error>Remote stage is locked. Please try again!</error>');
     }
     $storage = new Storage($this->getConnection());
     $git = new Git();
     $git->setRepository(Application::getInstance()->getAppPath());
     $status = $git->status();
     $current_branch = $status['branch'];
     // do not checkout if has unstaged changes
     if (count($status['changes'])) {
         return $this->output->writeln('<error>Please commit changes before!</error>');
     }
     $temp_branch = 'modvert/develop';
     $parent_branch = 'origin/develop';
     try {
         $git->branch->delete($temp_branch, ['force' => true]);
     } catch (\Exception $ex) {
         /** the branch not found */
     }
     $git->checkout->create($temp_branch, $parent_branch);
     $storage->loadRemote($stage);
     $storage_changes = ArrayHelper::matchValue($git->status()['changes'], 'file', '/^storage/');
     if (count($storage_changes)) {
         $this->output->writeln('<info>You have unstaged remote changes! Commit them and merge with main branch!</info>');
     } else {
         $git->checkout($current_branch);
     }
 }
Ejemplo n.º 3
0
 public function buildFromFiles()
 {
     /** @var $resource IResource **/
     $repository = new Repository();
     $driver = new DatabaseDriver($this->getDatabaseConnection());
     $repository->setDriver($driver);
     foreach (ResourceType::asArray() as $type) {
         $repository->truncate($type);
         $reader = FilesystemFactory::getReader($type);
         $resources = $reader->read();
         foreach ($resources as $resource) {
             $repository->add($resource);
         }
         // $resources = $repository->getAll($type);
         // $writer = FilesystemFactory::getWriter($type);
         // foreach ($resources as $resource) {
         //     $writer->write($resource);
         // }
     }
 }