Page MenuHomePhabricator

D8093.id18311.diff
No OneTemporary

D8093.id18311.diff

Index: src/__phutil_library_map__.php
===================================================================
--- src/__phutil_library_map__.php
+++ src/__phutil_library_map__.php
@@ -167,6 +167,7 @@
'ConduitAPI_diffusion_historyquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_historyquery_Method.php',
'ConduitAPI_diffusion_lastmodifiedquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_lastmodifiedquery_Method.php',
'ConduitAPI_diffusion_looksoon_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_looksoon_Method.php',
+ 'ConduitAPI_diffusion_lsquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_lsquery_Method.php',
'ConduitAPI_diffusion_mergedcommitsquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_mergedcommitsquery_Method.php',
'ConduitAPI_diffusion_querycommits_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_querycommits_Method.php',
'ConduitAPI_diffusion_rawdiffquery_Method' => 'applications/diffusion/conduit/ConduitAPI_diffusion_rawdiffquery_Method.php',
@@ -2637,6 +2638,7 @@
'ConduitAPI_diffusion_historyquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method',
'ConduitAPI_diffusion_lastmodifiedquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method',
'ConduitAPI_diffusion_looksoon_Method' => 'ConduitAPI_diffusion_Method',
+ 'ConduitAPI_diffusion_lsquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method',
'ConduitAPI_diffusion_mergedcommitsquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method',
'ConduitAPI_diffusion_querycommits_Method' => 'ConduitAPI_diffusion_Method',
'ConduitAPI_diffusion_rawdiffquery_Method' => 'ConduitAPI_diffusion_abstractquery_Method',
Index: src/applications/diffusion/conduit/ConduitAPI_diffusion_lsquery_Method.php
===================================================================
--- /dev/null
+++ src/applications/diffusion/conduit/ConduitAPI_diffusion_lsquery_Method.php
@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * @group conduit
+ */
+final class ConduitAPI_diffusion_lsquery_Method
+ extends ConduitAPI_diffusion_abstractquery_Method {
+
+ public function getMethodDescription() {
+ return 'Filename search on a repository.';
+ }
+
+ public function defineReturnType() {
+ return 'array';
+ }
+
+ protected function defineCustomParamTypes() {
+ return array(
+ 'path' => 'required string',
+ 'stableCommitName' => 'required string',
+ 'grep' => 'required string',
+ 'limit' => 'optional int',
+ 'offset' => 'optional int',
+ );
+ }
+
+ protected function defineCustomErrorTypes() {
+ return array(
+ 'ERR-LS-COMMAND' => 'Ls command failed.');
+ }
+
+ protected function getResult(ConduitAPIRequest $request) {
+ try {
+ $results = parent::getResult($request);
+ } catch (CommandException $ex) {
+ throw id(new ConduitException('ERR-LS-COMMAND'))
+ ->setErrorDescription($ex->getStderr());
+ }
+
+ $offset = $request->getValue('offset');
+ $results = array_slice($results, $offset);
+
+ return $results;
+ }
+
+ protected function getGitResult(ConduitAPIRequest $request) {
+ $drequest = $this->getDiffusionRequest();
+ $path = $drequest->getPath();
+ $stable_commit_name = $request->getValue('stableCommitName');
+ $repository = $drequest->getRepository();
+ $grep = $request->getValue('grep');
+ $limit = $request->getValue('limit');
+ $offset = $request->getValue('offset');
+
+ $results = array();
+ $future = $repository->getLocalCommandFuture(
+ 'ls-files -z %s -- %s*%s*',
+ $stable_commit_name,
+ $path,
+ $grep);
+
+ $lines = id(new LinesOfALargeExecFuture($future))->setDelimiter("\0");
+ foreach ($lines as $line) {
+ $results[] = array($line, null, null);
+ if (count($results) >= $offset + $limit) {
+ break;
+ }
+ }
+ unset($lines);
+ return $results;
+ }
+
+ // TODO(vlada): mercurial support
+}
+
Index: src/applications/diffusion/controller/DiffusionBrowseController.php
===================================================================
--- src/applications/diffusion/controller/DiffusionBrowseController.php
+++ src/applications/diffusion/controller/DiffusionBrowseController.php
@@ -26,8 +26,9 @@
->setValue($this->getRequest()->getStr('grep'))
->setCaption(pht('Enter a regular expression.')))
->appendChild(
- id(new AphrontFormSubmitControl())
- ->setValue(pht('Search File Content')));
+ id(new PHUIFormMultiSubmitControl())
+ ->addButton('__ls__', pht('Search File Names'))
+ ->addButton('__grep__', pht('Search File Content')));
break;
}
Index: src/applications/diffusion/controller/DiffusionBrowseSearchController.php
===================================================================
--- src/applications/diffusion/controller/DiffusionBrowseSearchController.php
+++ src/applications/diffusion/controller/DiffusionBrowseSearchController.php
@@ -55,7 +55,9 @@
try {
$results = $this->callConduitWithDiffusionRequest(
- 'diffusion.searchquery',
+ $this->getRequest()->getStr('__grep__') ?
+ 'diffusion.searchquery' :
+ 'diffusion.lsquery',
array(
'grep' => $this->getRequest()->getStr('grep'),
'stableCommitName' => $drequest->getStableCommitName(),
Index: src/view/form/control/PHUIFormMultiSubmitControl.php
===================================================================
--- src/view/form/control/PHUIFormMultiSubmitControl.php
+++ src/view/form/control/PHUIFormMultiSubmitControl.php
@@ -41,6 +41,7 @@
'class' => $class,
'disabled' => $this->getDisabled() ? 'disabled' : null,
));
+ return $this;
}
protected function getCustomControlClass() {

File Metadata

Mime Type
text/plain
Expires
Mar 19 2025, 7:13 AM (4 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7711001
Default Alt Text
D8093.id18311.diff (5 KB)

Event Timeline