--help is no longer present for arc subcommands in today's stable

Previously, subcommands had their own --help. Since updating to today’s stable Arcanist, they don’t.

Reproduction Instructions

$ git clone -b stable https://github.com/phacility/arcanist.git
$ cd arcanist
$ ./bin/arc diff --help
Usage Exception: Unrecognized argument 'diff'. Try 'arc help'.

Previously:

$ arc diff --help

      diff [paths] (svn)
      diff [commit] (git, hg)
          Supports: git, svn, hg
          Generate a Differential diff or revision from local changes.

          Under git and mercurial, you can specify a commit (like HEAD^^^
          or master) and Differential will generate a diff against the
          merge base of that commit and your current working directory parent.

          Under svn, you can choose to include only some of the modified files
          in the working copy in the diff by specifying their paths. If you
          omit paths, all changes are included in the diff.

          --add-all, -a
              Automatically add all unstaged and uncommitted files to

[much more help here]

I know that you can use arc help diff to get the help, but that’s not how any Unix tool I’m familiar with works and I only know it works that way because I read the source.

Phabricator/Arcanist Version

$ ./bin/arc version
arcanist acf38083f7ffc450395429a327c0109f13617bc9 (24 Apr 2020)

Thanks! I think I fixed this in https://secure.phabricator.com/D21168, which should now be in master and stable.

(A related issue is that arc --help is not an alias of arc help, but should be. I didn’t fix that one, but it has a TODO in the code.)

This bug “only” affected workflows which haven’t been updated for toolsets yet. However, this is most of the important flows, including arc diff, so this isn’t much of a qualifier until https://secure.phabricator.com/T13490 gets closer to completion.

Until that resolves and I can actually throw out the “fall through to old code” stuff this may still be a bit fiddly – let me know if you catch anything else.

I know that you can use arc help diff to get the help, but that’s not how any Unix tool I’m familiar with works

Although you’re right that most core unix tools (ls, rm, etc.) don’t work like this, they also mostly don’t have toolname <workflow> argument formats. I think this syntax is fairly common among tools that do have this syntax: offhand git, hg, and svn, and brew all work like this.

I only know it works that way because I read the source.

Beyond existing familiarity by analogy to git help diff, this should also be discoverable at the bottom of arc help (it has slightly clearer formatting in the real thing):

epriestley@orbital ~/dev/phabricator $ arc help
....
Use help command for a detailed command reference.

Looks great, thanks