Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/management/PhabricatorDifferentialExtractWorkflow.php
12256 views
1
<?php
2
3
final class PhabricatorDifferentialExtractWorkflow
4
extends PhabricatorDifferentialManagementWorkflow {
5
6
protected function didConstruct() {
7
$this
8
->setName('extract')
9
->setExamples('**extract** __commit__')
10
->setSynopsis(pht('Extract a diff from a commit.'))
11
->setArguments(
12
array(
13
array(
14
'name' => 'extract',
15
'wildcard' => true,
16
'help' => pht('Commit to extract.'),
17
),
18
));
19
}
20
21
public function execute(PhutilArgumentParser $args) {
22
$viewer = $this->getViewer();
23
24
$extract = $args->getArg('extract');
25
26
if (!$extract) {
27
throw new PhutilArgumentUsageException(
28
pht('Specify a commit to extract the diff from.'));
29
}
30
31
if (count($extract) > 1) {
32
throw new PhutilArgumentUsageException(
33
pht('Specify exactly one commit to extract.'));
34
}
35
36
$extract = head($extract);
37
38
$commit = id(new DiffusionCommitQuery())
39
->setViewer($viewer)
40
->withIdentifiers(array($extract))
41
->executeOne();
42
43
if (!$commit) {
44
throw new PhutilArgumentUsageException(
45
pht(
46
'Commit "%s" is not valid.',
47
$extract));
48
}
49
50
$diff = id(new DifferentialDiffExtractionEngine())
51
->setViewer($viewer)
52
->newDiffFromCommit($commit);
53
54
$uri = PhabricatorEnv::getProductionURI($diff->getURI());
55
56
echo tsprintf(
57
"%s\n\n %s\n",
58
pht('Extracted diff from "%s":', $extract),
59
$uri);
60
}
61
62
63
}
64
65