[Pipet Users] Re: making more CLI programs Piper-compliant

J.W. Bizzaro jeff at bioinformatics.org
Tue May 22 11:07:49 EDT 2001


(late reply)

Roland Walker wrote:
> 
> There is absolutely a better way.  Don't parse the help output.  This
> is harder than doing things the nominally hard way.
> 
>    1 First, you must wrap some CLI elements by hand.  This is needed
>      to get started, yes? and you are doing it already, yes?  Wrapping
>      basically means standardizing the handling of STDIN, STDOUT,
>      and STDERR, trying to tame buffering, and providing some
>      formalization of the options.  This is not too hard; it's my own
>      stock in trade.

Actually, we've come up with a way to do the wrapping using connect-the-dots:

  http://www.bioinformatics.org/piper/documentation/command-compilation.html

Sure, programmers will find it simpler to write one by hand, but perhaps
non-programmers will find it usable.  In any case, it's been an academic
excercise to see how many things can be done using connect-the-dots.

>    2 Provide an _easy_ way for CLI authors to export options, making
>      makes their programs drop-in elements for you.  This means not
>      writing yet another standard, which authors will just ignore, but
>      giving authors the needed code.  This is not as hard as it seems.

Is there ANY standard out there?  Can you provide us with an example?

>      You won't have to conquer SEALS, as I'll just give it to you.

Great.

> I assume you have written an XML spec to define the options?  That's
> what I would have done if XML was around when I started my thing.

Sort-of.  It's a long story.  Basically, we already *CAN* define options using
XML, but that is due to the dataflow nature of Piper.  We should probably come
up with clear specs though.

> Give me your spec and a give me a couple of hours, and I can give you
> a Getopt::Piper that is drop-in compatible with Getopt::Long.

Super.

> I'm not claiming this is perfect, just useful as heck.  Cram new
> programs in to your system as hard as you can.  If you reach a certain
> critical mass, all kinds of stuff will start to come your way.

That's our motto :-)

> There are dozens of scripts here at NCBI that use the same library for
> argument processing.  For some reason argument processing and CLI
> usability is an obsessive interest of mine.  Anyway, I build a data
> structure that holds more than anyone could want to know about
> processing the options for a CLI script.

You're the man to talk to about this then!

> Then I like to do more with
> that than merely process the options.  For instance, each script can
> generate programmable completions for tcsh based on its expected
> arguments:

For Piper, grepping what the program needs for parameters is more important
than grepping what the parameters do.  Piper is "dumb" that way: it doesn't
care what data passes through it; it's the responsibility of the node/program
to deal with it (although we'd like to help the user make the right
connections).

> So to you Piperians, I say, show me your spec, I'll throw it into
> the main SEALS library so that all scripts can be queried, say,
> like this
> 
>    gi2fasta -piper_options
> 
> to return your spec, giving you a sizable wad of new CLI elements
> for your system.

Again, I'd be interested in seeing what others have come up with and if there
may be some sort of a standard approach.  We'd be interested in promoting a
standard (say for GNU programs).

> There is certainly some duplication, but duplication
> can even be good.  I am not into the idea of a single perfect
> system, or a single best way, but rather in opening up new ways
> which are new paths for users to wander.

The old standards vs. freedom to innovate argument :-)

> Furthermore, you may have our module if you find it useful.  I'd say
> the module is wonderful, though idiosyncratic.  Fixing it for general
> use means mostly indenting and deleting.

Thanks.

> In addition, the research side at the NCBI is a powerfully active
> testbed.  If you could get folks using Piper here, you would get
> a _lot_ of feedback.
> 
> Think critical mass.

>From the bioinformatics side of Piper development, I can say that it would be
a Great Thing to have NCBI involved :-)

> So I think that the only hitch between us and a world of excitement
> is the lamentable lack of a packaging system that can tame the SEALS
> monster.  We have multiple revisions we need to reconcile, and
> tangles of code that we rather urgently need to clean up and push
> out the door in some usable form.

Are you thinking along the line of RPM, Deb, or CPAN?

Thanks for the message.  It was very helpful.

Cheers.
Jeff
-- 
J.W. Bizzaro                                jeff at bioinformatics.org
Director, Bioinformatics.org        http://bioinformatics.org/~jeff
"As we enjoy great advantages from the inventions of others, we
should be glad of an opportunity to serve others by any invention
of ours; and this we should do freely and generously."
                   -- Benjamin Franklin
--




More information about the Pipet-Users mailing list