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()) { } }
/** * 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); } }
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); // } } }