At one point i suggested a set of helper functions for Option.  I think
that it would really help before this change goes out.  With it we can
reasonably change the BiFunction to a simple function taking an Option and
returning a String.

I will code this up tomorrow.

Claude

On Wed 15 May 2024, 09:14 Claude Warren, <cla...@xenei.com> wrote:

> I opened CLI-333 to address the Build production method issue.
>
> On Tue, May 14, 2024 at 10:25 PM Gary Gregory <garydgreg...@gmail.com>
> wrote:
>
>> Sounds good to me! Thank you for talking it out. GoF reference appreciated
>> 👏  😉
>>
>> Looking forward to a PR,
>> Gary
>>
>> On Tue, May 14, 2024, 1:47 PM Claude Warren <cla...@xenei.com> wrote:
>>
>> > I have to admit that i am partial to build but in reviewing gang of four
>> > and various java build patterns i find that there are a number of
>> terminal
>> > methods.
>> >
>> > Gary is, I now believe, correct; that the builder should implement
>> > Supplier.
>> >
>> >
>> >
>> > On Tue 14 May 2024, 19:28 Claude Warren, <cla...@xenei.com> wrote:
>> >
>> > > By factory i assume you mean builder in this context
>> > >
>> > > To my understanding a factory can produce mutiple types of objects
>> while
>> > a
>> > > builder ony one.  I got called out on that awhile ago on a different
>> > project
>> > >
>> > > Should we then make all existing builders in CLI implement supplier
>> and
>> > > deprecate the current build methods in favor of get?  Would this be
>> your
>> > > recommendation?
>> > >
>> > >
>> > >
>> > > On Tue 14 May 2024, 19:02 Gary Gregory, <garydgreg...@gmail.com>
>> wrote:
>> > >
>> > >> Also think of the anti pattern of all Commons Components implementing
>> > >> their
>> > >> own factory pattern with a custom interface instead of just reusing
>> > Java's
>> > >> own Supplier.
>> > >>
>> > >> Gary
>> > >>
>> > >> On Tue, May 14, 2024, 1:00 PM Gary Gregory <garydgreg...@gmail.com>
>> > >> wrote:
>> > >>
>> > >> > IMO future factories should only be Suppliers.
>> > >> >
>> > >> > Whether to deprecate current code in favor of Suppliers is
>> possible if
>> > >> > only a bit noisy.
>> > >> >
>> > >> > Gary
>> > >> >
>> > >> > On Tue, May 14, 2024, 12:22 PM Claude Warren <cla...@xenei.com>
>> > wrote:
>> > >> >
>> > >> >> I have submitted a draft pull request
>> > >> >> https://github.com/apache/commons-cli/pull/272
>> > >> >>
>> > >> >> However, I would like to resolve the Builder/build Builder/get
>> naming
>> > >> >> issue
>> > >> >> before I take it out of draft mode.
>> > >> >>
>> > >> >>
>> > >> >>
>> > >> >> On Tue, May 14, 2024 at 6:05 PM Claude Warren <cla...@xenei.com>
>> > >> wrote:
>> > >> >>
>> > >> >> > I will add some tests to show what it is doing in the various
>> > cases.
>> > >> >> But
>> > >> >> > I think that since we are now providing external developers with
>> > the
>> > >> >> > ability to display custom information about the Option there
>> are a
>> > >> >> > couple of function that we could probably use internally and
>> > provide
>> > >> to
>> > >> >> the
>> > >> >> > external developer.
>> > >> >> >
>> > >> >> > A prime example is the ability to get the string "-s" or "-s,
>> > >> --longopt"
>> > >> >> > or "--longopt" as an output based on weather the option has a
>> short
>> > >> >> option,
>> > >> >> > long option or both defined.  This is used in several places
>> > >> internally,
>> > >> >> > and I have had to code it for some external code I was
>> developing.
>> > >> >> >
>> > >> >> > There are probably others that we can find the code base but I
>> was
>> > >> >> > thinking an "OptionUtils" or "OptionFormat" or "OptionHelper"
>> class
>> > >> that
>> > >> >> > has static methods taking an Option.
>> > >> >> >
>> > >> >> > Are there any objections to this?
>> > >> >> >
>> > >> >> >
>> > >> >> > On Tue, May 14, 2024 at 4:08 PM Claude Warren <cla...@xenei.com
>> >
>> > >> wrote:
>> > >> >> >
>> > >> >> >> Eric, I may have broken it with my implementation of the
>> > >> HelpFormatter
>> > >> >> >> deprecatedFormatFunc() method.
>> > >> >> >>
>> > >> >> >> On Tue, May 14, 2024 at 4:06 PM Claude Warren <
>> cla...@xenei.com>
>> > >> >> wrote:
>> > >> >> >>
>> > >> >> >>> We already have historical uses of builders in CLI (e.g.
>> > >> >> >>> CommandLine.Builder) that use build() not get().
>> > >> >> >>> In addition many of the other commons packages have Builders
>> that
>> > >> are
>> > >> >> >>> triggered by a "build" call.
>> > >> >> >>>
>> > >> >> >>> On Tue, May 14, 2024 at 3:03 PM Gary Gregory <
>> > >> garydgreg...@gmail.com>
>> > >> >> >>> wrote:
>> > >> >> >>>
>> > >> >> >>>> Hi All,
>> > >> >> >>>>
>> > >> >> >>>> Better documentation is always nice :-)
>> > >> >> >>>>
>> > >> >> >>>> I vote for Supplier/get() because it does not require the
>> > >> invention
>> > >> >> of
>> > >> >> >>>> something new that does _exactly the same thing as the code
>> > >> already
>> > >> >> >>>> provided in the JRE_.
>> > >> >> >>>>
>> > >> >> >>>> Gary
>> > >> >> >>>>
>> > >> >> >>>> On Tue, May 14, 2024 at 8:22 AM Claude Warren <
>> cla...@xenei.com
>> > >
>> > >> >> wrote:
>> > >> >> >>>> >
>> > >> >> >>>> > I find a couple of issues:
>> > >> >> >>>> >
>> > >> >> >>>> > No documentation for the new options.  (I am working on
>> that).
>> > >> >> >>>> > A weird mix of .get() and .build() methods on builders.
>> The
>> > new
>> > >> >> >>>> builders
>> > >> >> >>>> > all extend Supplier<> so the get makes sense in that
>> respect,
>> > >> but I
>> > >> >> >>>> don't
>> > >> >> >>>> > think this is the normal nomenclature for Builders.  I
>> expect
>> > a
>> > >> >> >>>> build()
>> > >> >> >>>> > method.  In any case we should settle on one or the
>> other.  In
>> > >> case
>> > >> >> >>>> it is
>> > >> >> >>>> > not obvious I vote for build().
>> > >> >> >>>> >
>> > >> >> >>>> > On Mon, May 13, 2024 at 11:54 AM Claude Warren <
>> > >> cla...@xenei.com>
>> > >> >> >>>> wrote:
>> > >> >> >>>> >
>> > >> >> >>>> > > Will do.
>> > >> >> >>>> > >
>> > >> >> >>>> > > On Sun, May 12, 2024 at 8:49 PM Gary Gregory <
>> > >> >> >>>> garydgreg...@gmail.com>
>> > >> >> >>>> > > wrote:
>> > >> >> >>>> > >
>> > >> >> >>>> > >> How does it look now?
>> > >> >> >>>> > >>
>> > >> >> >>>> > >> Would you check git master is OK, then I can cut a
>> release
>> > >> >> >>>> candidate
>> > >> >> >>>> > >> later in the week.
>> > >> >> >>>> > >>
>> > >> >> >>>> > >> Gary
>> > >> >> >>>> > >>
>> > >> >> >>>> > >> On Sat, May 11, 2024 at 6:28 AM Claude Warren <
>> > >> >> cla...@apache.org>
>> > >> >> >>>> wrote:
>> > >> >> >>>> > >> >
>> > >> >> >>>> > >> > Also, it appears that the deprecatedHandler is only
>> > tested
>> > >> on
>> > >> >> >>>> the string
>> > >> >> >>>> > >> > option processing.  if the application retains a list
>> of
>> > >> >> Options
>> > >> >> >>>> and
>> > >> >> >>>> > >> passes
>> > >> >> >>>> > >> > those in to be checked the deprecation check is not
>> > >> execute.
>> > >> >> >>>> > >> >
>> > >> >> >>>> > >> > On Sat, May 11, 2024 at 12:18 PM Claude Warren <
>> > >> >> >>>> cla...@apache.org>
>> > >> >> >>>> > >> wrote:
>> > >> >> >>>> > >> >
>> > >> >> >>>> > >> > > Greetings,
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >> > > I see that there is a deprecated option in cli
>> 1.7.0,
>> > and
>> > >> >> that
>> > >> >> >>>> it has
>> > >> >> >>>> > >> some
>> > >> >> >>>> > >> > > nice data.  But I don't see how to display the info
>> in
>> > >> the
>> > >> >> >>>> help.
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >> > > It looks like the only option is to print
>> > "[Deprecated]"
>> > >> >> >>>> without any
>> > >> >> >>>> > >> > > information from the deprecated info.  I think the
>> > >> >> HelpPrinter
>> > >> >> >>>> needs a
>> > >> >> >>>> > >> > > function (similar to the command line
>> > deprecatedHandler)
>> > >> to
>> > >> >> >>>> convert
>> > >> >> >>>> > >> the
>> > >> >> >>>> > >> > > object to a string that can be prefixed to the
>> option
>> > >> help
>> > >> >> >>>> output
>> > >> >> >>>> > >> where the
>> > >> >> >>>> > >> > > "[Deprecated]" is now.
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >> > > Does this make sense?
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >> > > Is there something I am overlooking that already
>> does
>> > >> this?
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >> > > Claude
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >> > >
>> > >> >> >>>> > >>
>> > >> >> >>>> > >>
>> > >> >> >>>>
>> > >> ---------------------------------------------------------------------
>> > >> >> >>>> > >> To unsubscribe, e-mail:
>> dev-unsubscr...@commons.apache.org
>> > >> >> >>>> > >> For additional commands, e-mail:
>> > dev-h...@commons.apache.org
>> > >> >> >>>> > >>
>> > >> >> >>>> > >>
>> > >> >> >>>> > >
>> > >> >> >>>> > > --
>> > >> >> >>>> > > LinkedIn: http://www.linkedin.com/in/claudewarren
>> > >> >> >>>> > >
>> > >> >> >>>> >
>> > >> >> >>>> >
>> > >> >> >>>> > --
>> > >> >> >>>> > LinkedIn: http://www.linkedin.com/in/claudewarren
>> > >> >> >>>>
>> > >> >> >>>>
>> > >> ---------------------------------------------------------------------
>> > >> >> >>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> > >> >> >>>> For additional commands, e-mail: dev-h...@commons.apache.org
>> > >> >> >>>>
>> > >> >> >>>>
>> > >> >> >>>
>> > >> >> >>> --
>> > >> >> >>> LinkedIn: http://www.linkedin.com/in/claudewarren
>> > >> >> >>>
>> > >> >> >>
>> > >> >> >>
>> > >> >> >> --
>> > >> >> >> LinkedIn: http://www.linkedin.com/in/claudewarren
>> > >> >> >>
>> > >> >> >
>> > >> >> >
>> > >> >> > --
>> > >> >> > LinkedIn: http://www.linkedin.com/in/claudewarren
>> > >> >> >
>> > >> >>
>> > >> >>
>> > >> >> --
>> > >> >> LinkedIn: http://www.linkedin.com/in/claudewarren
>> > >> >>
>> > >> >
>> > >>
>> > >
>> >
>>
>
>
> --
> LinkedIn: http://www.linkedin.com/in/claudewarren
>

Reply via email to