Changeset View
Changeset View
Standalone View
Standalone View
src/workflow/ArcanistLookWorkflow.php
- This file was added.
| <?php | |||||
| final class ArcanistLookWorkflow | |||||
| extends ArcanistArcWorkflow { | |||||
| public function getWorkflowName() { | |||||
| return 'look'; | |||||
| } | |||||
| public function getWorkflowInformation() { | |||||
| $help = pht(<<<EOTEXT | |||||
| Look around, or look at a specific __thing__. | |||||
| EOTEXT | |||||
| ); | |||||
| return $this->newWorkflowInformation() | |||||
| ->setSynopsis( | |||||
| pht('You stand in the middle of a small clearing.')) | |||||
| ->addExample('**look**') | |||||
| ->addExample('**look** [options] -- __thing__') | |||||
| ->setHelp($help); | |||||
| } | |||||
| public function getWorkflowArguments() { | |||||
| return array( | |||||
| $this->newWorkflowArgument('argv') | |||||
| ->setWildcard(true), | |||||
| ); | |||||
| } | |||||
| public function runWorkflow() { | |||||
| echo tsprintf( | |||||
| "%!\n\n", | |||||
| pht( | |||||
| 'Arcventure')); | |||||
| $argv = $this->getArgument('argv'); | |||||
| if ($argv) { | |||||
| if ($argv === array('remotes')) { | |||||
| return $this->lookRemotes(); | |||||
| } | |||||
| echo tsprintf( | |||||
| "%s\n", | |||||
| pht( | |||||
| 'You do not see "%s" anywhere.', | |||||
| implode(' ', $argv))); | |||||
| return 1; | |||||
| } | |||||
| echo tsprintf( | |||||
| "%W\n\n", | |||||
| pht( | |||||
| 'You stand in the middle of a small clearing in the woods.')); | |||||
| $now = time(); | |||||
| $hour = (int)date('h', $now); | |||||
| if ($hour >= 5 && $hour <= 7) { | |||||
| $time = pht( | |||||
| 'It is early morning. Glimses of sunlight peek through the trees '. | |||||
| 'and you hear the faint sound of birds overhead.'); | |||||
| } else if ($hour >= 8 && $hour <= 10) { | |||||
| $time = pht( | |||||
| 'It is morning. The sun is high in the sky to the east and you hear '. | |||||
| 'birds all around you. A gentle breeze rustles the leaves overhead.'); | |||||
| } else if ($hour >= 11 && $hour <= 13) { | |||||
| $time = pht( | |||||
| 'It is midday. The sun is high overhead and the air is still. It is '. | |||||
| 'very warm. You hear the cry of a hawk high overhead and far in the '. | |||||
| 'distance.'); | |||||
| } else if ($hour >= 14 && $hour <= 16) { | |||||
| $time = pht( | |||||
| 'It is afternoon. The air has changed and it feels as though it '. | |||||
| 'may rain. You hear a squirrel chittering high overhead.'); | |||||
| } else if ($hour >= 17 && $hour <= 19) { | |||||
| $time = pht( | |||||
| 'It is nearly dusk. The wind has picked up and the trees around you '. | |||||
| 'sway and rustle.'); | |||||
| } else if ($hour >= 21 && $hour <= 23) { | |||||
| $time = pht( | |||||
| 'It is late in the evening. The air is cool and still, and filled '. | |||||
| 'with the sound of crickets.'); | |||||
| } else { | |||||
| $phase = new PhutilLunarPhase($now); | |||||
| if ($phase->isNew()) { | |||||
| $time = pht( | |||||
| 'Night has fallen, and the thin sliver of moon overhead offers '. | |||||
| 'no comfort. It is almost pitch black. The night is bitter '. | |||||
| 'cold. It will be difficult to look around in these conditions.'); | |||||
| } else if ($phase->isFull()) { | |||||
| $time = pht( | |||||
| 'Night has fallen, but your surroundings are illuminated by the '. | |||||
| 'silvery glow of a full moon overhead. The night is cool and '. | |||||
| 'the air is crisp. The trees are calm.'); | |||||
| } else if ($phase->isWaxing()) { | |||||
| $time = pht( | |||||
| 'Night has fallen. The moon overhead is waxing, and provides '. | |||||
| 'just enough light that you can make out your surroundings. It '. | |||||
| 'is quite cold.'); | |||||
| } else if ($phase->isWaning()) { | |||||
| $time = pht( | |||||
| 'Night has fallen. The moon overhead is waning. You can barely '. | |||||
| 'make out your surroundings. It is very cold.'); | |||||
| } | |||||
| } | |||||
| echo tsprintf( | |||||
| "%W\n\n", | |||||
| $time); | |||||
| echo tsprintf( | |||||
| "%W\n\n", | |||||
| pht( | |||||
| 'Several small trails and footpaths cross here, twisting away from '. | |||||
| 'you among the trees.')); | |||||
| echo tsprintf( | |||||
| pht("Just ahead to the north, you can see **remotes**.\n")); | |||||
| return 0; | |||||
| } | |||||
| private function lookRemotes() { | |||||
| echo tsprintf( | |||||
| "%W\n\n", | |||||
| pht( | |||||
| 'You follow a wide, straight path to the north and arrive in a '. | |||||
| 'grove of fruit trees after a few minutes of walking. The grass '. | |||||
| 'underfoot is thick and small insects flit through the air.')); | |||||
| echo tsprintf( | |||||
| "%W\n\n", | |||||
| pht( | |||||
| 'At the far edge of the grove, you see remotes:')); | |||||
| $api = $this->getRepositoryAPI(); | |||||
| $remotes = $api->newRemoteRefQuery() | |||||
| ->execute(); | |||||
| foreach ($remotes as $remote) { | |||||
| $view = $remote->newRefView(); | |||||
| $push_uri = $remote->getPushURI(); | |||||
| if ($push_uri === null) { | |||||
| $push_uri = '-'; | |||||
| } | |||||
| $view->appendLine( | |||||
| pht( | |||||
| 'Push URI: %s', | |||||
| $push_uri)); | |||||
| $fetch_uri = $remote->getFetchURI(); | |||||
| if ($fetch_uri === null) { | |||||
| $fetch_uri = '-'; | |||||
| } | |||||
| $view->appendLine( | |||||
| pht( | |||||
| 'Fetch URI: %s', | |||||
| $fetch_uri)); | |||||
| echo tsprintf('%s', $view); | |||||
| } | |||||
| } | |||||
| } | |||||