Page MenuHomePhabricator

D9265.diff
No OneTemporary

D9265.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -174,6 +174,7 @@
'ArcanistUploadWorkflow' => 'workflow/ArcanistUploadWorkflow.php',
'ArcanistUsageException' => 'exception/ArcanistUsageException.php',
'ArcanistUserAbortException' => 'exception/usage/ArcanistUserAbortException.php',
+ 'ArcanistVersionWorkflow' => 'workflow/ArcanistVersionWorkflow.php',
'ArcanistWhichWorkflow' => 'workflow/ArcanistWhichWorkflow.php',
'ArcanistWorkingCopyIdentity' => 'workingcopyidentity/ArcanistWorkingCopyIdentity.php',
'ArcanistXHPASTLintNamingHook' => 'lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php',
@@ -337,6 +338,7 @@
'ArcanistUploadWorkflow' => 'ArcanistBaseWorkflow',
'ArcanistUsageException' => 'Exception',
'ArcanistUserAbortException' => 'ArcanistUsageException',
+ 'ArcanistVersionWorkflow' => 'ArcanistBaseWorkflow',
'ArcanistWhichWorkflow' => 'ArcanistBaseWorkflow',
'ArcanistXHPASTLintNamingHookTestCase' => 'ArcanistTestCase',
'ArcanistXHPASTLintTestSwitchHook' => 'ArcanistXHPASTLintSwitchHook',
diff --git a/src/workflow/ArcanistVersionWorkflow.php b/src/workflow/ArcanistVersionWorkflow.php
new file mode 100644
--- /dev/null
+++ b/src/workflow/ArcanistVersionWorkflow.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * Display the current version of Arcanist.
+ */
+final class ArcanistVersionWorkflow extends ArcanistBaseWorkflow {
+
+ public function getWorkflowName() {
+ return 'version';
+ }
+
+ public function getCommandSynopses() {
+ return phutil_console_format(<<<EOTEXT
+ **version** [__options__]
+EOTEXT
+ );
+ }
+
+ public function getCommandHelp() {
+ return phutil_console_format(pht(<<<EOTEXT
+ Supports: cli
+ Shows the current version of arcanist.
+EOTEXT
+ ));
+ }
+
+ public function run() {
+ $console = PhutilConsole::getConsole();
+
+ if (!Filesystem::binaryExists('git')) {
+ throw new ArcanistUsageException(
+ 'Cannot display current version without having `git` installed.');
+ }
+
+ $roots = array(
+ 'arcanist' => dirname(phutil_get_library_root('arcanist')),
+ 'libphutil' => dirname(phutil_get_library_root('phutil')),
+ );
+
+ foreach ($roots as $lib => $root) {
+ $working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
+ $configuration_manager = clone $this->getConfigurationManager();
+ $configuration_manager->setWorkingCopyIdentity($working_copy);
+ $repository = ArcanistRepositoryAPI::newAPIFromConfigurationManager(
+ $configuration_manager);
+
+ if (!Filesystem::pathExists($repository->getMetadataPath())) {
+ throw new ArcanistUsageException("{$lib} is not a git working copy.");
+ }
+
+ list($stdout) = $repository->execxLocal('log -1 --format=%s', '%H %ct');
+ list($commit, $timestamp) = explode(' ', $stdout);
+
+ $console->writeOut("%s %s (%s)\n",
+ $lib,
+ $commit,
+ date('j M Y', (int)$timestamp));
+ }
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Tue, Oct 15, 1:15 PM (4 w, 11 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6712952
Default Alt Text
D9265.diff (3 KB)

Event Timeline