On May 18, 2012, at 11:23 AM, Jared Johnson wrote:
> a little OT: 'reject N' seems a little clunky; why not something more
> like 'action [reject | add-header | ...]'?
>
> -Jared
Having a single action argument is less versatile and less obvious than having
explicit reject and add-header options . I'd argue it's also more complex to
code, test, and document. Further, action arguments are likely to have
disparate meanings among plugins and plugin authors.
If every plugin that may reject mail has a boolean toggle named 'reject', users
will have learned from one plugin everything they need to know to configure any
other plugin to not reject mail. They don't need to read POD to understand what
a reject argument means for a specific plugin. But they likely will for an
action argument. By keeping options simple and explicit, it's easier to
understand the code, test the code, and write the documentation. Code that is
easy to understand and test is far less likely to have bugs present, or to have
bugs introduced in the future.
There's several plugins that have something like what you've suggested:
plugin action [ add-header | deny | denysoft ]
And here's a sampling of the arguments that various plugins use with action:
add-header, log, continue, reject, deny, denysoft, accept, delete, add
Reject has a simple, explicit, and universal meaning in every plugin, and thus
my preference for it.
Matt