[Wilds] Rewrite "arc" entrypoints for toolsets

Authored by epriestley on Sep 14 2018, 6:26 PM.


[Wilds] Rewrite "arc" entrypoints for toolsets

Ref T13098. Depends on D19675. This change is headed to the untamed-wilds branch.

This change prevents arc from running arc diff, so I'm copy/pasting it.

This change also completely breaks arc, but I'm just generally trying to do this rewrite step-by-step so we have at least a bit of context to refer to in the future.

The major change here is to turn both arc and phage into scripts which start an ArcanistRuntime. This runtime then decides which workflows (like "diff", "patch", or "remote") are available based on $argv[0]. This turns arc into more of a CLI tools platform: we can build phage on it, third parties can build my-companion-tool-thing, etc. But all the different entry points can share a lot of infrastructure like: help, alias, shell-complete, configuration, Conduit, prompting, --trace, extension infrastructure, and so on.

ArcanistRuntime is roughly a slightly more modern version of scripts/arcanist.php. That will be removed eventually, but not everything has ported yet.

Test Plan: This code basically doesn't run yet, although the next patch runs at least a little bit.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13098

Differential Revision: https://secure.phabricator.com/D19677