[Freeipa-devel] [PATCH] Add more sophisticated help interface. Split commands into 'topics'.
Jason Gerard DeRose
jderose at redhat.com
Mon Apr 20 17:47:45 UTC 2009
On Fri, 2009-04-17 at 10:46 +1000, David O'Brien wrote:
> Pavel Zuna wrote:
> > Rob Crittenden wrote:
> >> Pavel Zuna wrote:
> >>> This is more of a suggestion than a real patch. I thought it might
> >>> be easier to actually show what I had in mind than explaining it.
> >>> Sometimes code is more than words. :)
> >>>
> >>> Pavel
> >>
> >> I think this is a good start. The output looks like:
> >>
> >> $ ipa
> >> Usage: ipa [global-options] COMMAND ...
> >>
> >> Use `ipa help TOPIC` for command listings.
> >>
> >> Topics:
> >> general General IPA management.
> >> aci ACI object.
> >> application Application object
> >> automount Automount object.
> >> delegation Delegation object.
> >> group group object.
> >> host Host object.
> >> hostgroup hostgroup object.
> >> netgroup netgroup object.
> >> rolegroup rolegroup object.
> >> service Service object.
> >> taskgroup taskgroup object.
> >> user User object.
> >>
> >> Try `ipa --help` for a list of global options.
> >>
> >> It looks like you dumped things that aren't related to a top-level
> >> class into general (things like passwd, the cert commands, and a few
> >> others). I guess they have to go somewhere, just not sure I'd know to
> >> look in general if I was a new user.
> >>
> >> Should we mandate an Object for every plugin? Or include the list of
> >> these general commands in the main topics list? That might be
> >> confusing too because that would mean that 'env' is on the same level
> >> as 'user'.
> >>
> >> Any suggestions?
> >>
> >> The patch is good and we could easily just apply this but I don't
> >> want to forget about these issues. In any case we'll want to go into
> >> each plugin and set the Object documentation to be more descriptive.
> >>
> >> rob
> > I wrote another version of the help interface today taking into
> > consideration the issues you mentioned. It's based on plugins this
> > time instead of objects.
> >
> > The output looks like this:
> >
> > $ ipa
> > Usage: ipa [global-options] COMMAND ...
> >
> > Built-in commands:
> > console Start the IPA interactive Python console.
> > help Display help for a command or topic.
> >
> > Help topics:
> > aci Frontend plugins for managing DS ACIs
> > application Frontend plugins for application policy containers.
> > automount Frontend plugins for automount.
> > defaultoptions Frontend plugin for default options in IPA.
> > delegation Frontend plugins for delegations.
> > dns Frontend plugin for DNS management.
> > group Frontend plugins for groups.
> > hbac Frontend plugin for HBAC management.
> > host Frontend plugins for host/machine Identity.
> > hostgroup Frontend plugins for hostgroups.
> > join Machine join
> > misc Misc frontend plugins.
> > netgroup Frontend plugins for netgroups.
> > passwd Frontend plugins for password changes.
> > pwpolicy Frontend plugins for password policy.
> > rolegroup Frontend plugins for rolegroups.
> > service Frontend plugins for service (Identity).
> > taskgroup Frontend plugins for taskgroups.
> > user Frontend plugins for user (Identity).
> >
> > Try `ipa --help` for a list of global options.
I think these docstrings should not include the phrase "frontend
plugins". I think changing them to read something like this would be
better:
aci Commands to manage accesses control ACIs.
application Commands to manage application policy containers.
automount Commands to manage automount maps.
Or something like that, perhaps even more concise.
> > Commands not originating from plugins are listed as built-ins. The
> > short description for topics is taken from the first line of the
> > module's docstring.
> >
> > The code itself is a bit hacky, because I just couldn't find any
> > better way to get every plugin module, it's docstring a list of
> > commands it implements. I'll rewrite it if necessary.
> >
> > Pavel
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Freeipa-devel mailing list
> > Freeipa-devel at redhat.com
> > https://www.redhat.com/mailman/listinfo/freeipa-devel
> How much work is involved in editing the first line of a module's
> docstring? Is it developer-only territory or straight-forward enough
> that I could do it?
It's strait-forward.
> I ask because I'm interested in keeping everything related to doc, help,
> etc., on an even keel and consistent, which in this case means:
> s/plugin/plug-in
> s/backend/back-end
> s/frontend/front-end
As mentioned, in this case I we should use more concise docstrings
instead. I think it's a great idea to have the CLI help and the
documentation be consistent where possible, but the help docstrings have
very space constrained because ideally the should be short enough as to
not wrap on a 80 character wide terminal.
> I would also review the use of terms like "host/machine", because in IPA
> 2.0 "host" refers to the host object specifically created to represent
> the host *machine*, and which exists as a new object in DS. "Machine",
> on the other hand, refers to the computer itself. (This gets trickier
> when we start talking about the "host" where a virtual machine is
> running.) Hopefully my understanding of host objects and machines is
> correct here.
>
> So, in the case of "host : Frontend plugins for host/machine Identity."
> I'd suggest a change to "host : Front-end plug-ins for machine identity."
>
> 1. front-end (as per style guide)
> 2. plug-ins (as per style guide)
> 3. machine (we're identifying the machine, and using the host object to
> do it)
> 4. identity (lower case)
>
> regards,
>
More information about the Freeipa-devel
mailing list