stop does different things depending on the stage of a command that it's used in.

In CommandStart, it quietly stops any further action.

In CommandPerform, it causes the command to fail, which looks like "commandname actionitem failed". If no other output is emitted to say why it failed, this is not nice.

(It can't be used in CommandCleanup.)

It would be good to get rid of support for running stop in CommandPerform. Simply change the type:

- stop :: Annex (Maybe a)
+ stop :: CommandStart

And follow the compile errors.

Hmm, I tried doing this, and I was not finding any other places that stopped without emitting some kind of warning or informational message.

And on second thought, this use of stop behaves the same as next (return False), or as having a CommandCleanup that returns False without displaying any indication why.

So compprehensively fixing it would probably need to involve returning something other than False from CommandCleanup, like a message to display, but with only one case of the problem currently, I don't think it's worth the bother to do that. Also, there are lots of different ways it makes sense to display different messages in different situations and so returning a message to display feels wrong.

Guess I'm not going to do this. done --Joey