so i updated this to work with nested arguments which is what i really
wanted to use it for in the first place. i almost always end up
creating a map of config settings and this makes it easy for me to
override things from the CL.

regarding the getopt stuff, i kind of agree but dont particularly like
getopt and parsing the raw args into pairs seemed pretty easy so i
wasnt so bothered about reinventing that wheel...

Example:

(clargon args
     (required ["-p" "--port"] #(Integer. %))
     (optional ["--host" :default "localhost"])
     (optional ["--verbose" :default true])
     (optional ["--log-directory" :default "/some/path"])
     (group "--server"
            (optional ["-n" "--name"])
            (optional ["-p" "--port"] #(Integer. %))
            (group "--paths"
                   (optional ["--inbound" :default "/tmp/inbound"])
                   (optional ["--outbound" :default "/tmp/outbound"]))))
with args of:

'("-p" "8080"
  "--no-verbose"
  "--log-directory" "/tmp"
  "--server--name" "localhost"
  "--server--port" "9090"
  "--server--paths--inbound" "/dev/null")
will produce a clojure map with the names picked out for you as keywords:

 {:port 8080
  :host "localhost"
  :verbose false
  :log-directory "/tmp"
  :server {:name "localhost"
           :port 9090
           :paths {:inbound "/dev/null"
                   :outbound "/tmp/outbound"}}}

On Sat, Dec 11, 2010 at 12:20 PM, Alan <a...@malloys.org> wrote:
> I confess I didn't notice the type-conversion stuff in clargon; my
> view is now basically the same as Miekel's: it's great to have these
> new features, but they should be on top of getopt, which parses
> excellently. In fact, I think I'll fork clargon and see if I can tweak
> it that way.
>
> On Dec 11, 1:32 am, Meikel Brandmeyer <m...@kotka.de> wrote:
>> Hi,
>>
>> Am 11.12.2010 um 09:53 schrieb Saul Hazledine:
>>
>> > I saw this and thought the opposite! I think it is a good thing that
>> > somebody has done a higher level argument parsing library.
>>
>> > As far as I know, getopt doesn't support type conversion, help text or
>> > field validation. Generally, higher level languages have better
>> > argument parsing libraries than the getopt style, Python for instance:
>> >http://docs.python.org/library/optparse.html
>>
>> This is completely orthogonal. Adding type conversion, help text or field 
>> validation does not require the underlying parser to be re-implemented. One 
>> can use getopt, commons-cli, with-command-line or jopt-simple and add things 
>> on top for real added value.
>>
>> That said: I have no opinion about the posted code, because I haven't looked 
>> at it, yet. Generally, I would prefer the above approach: use something 
>> existing and add functionality on top. But then, I'm also guilty of 
>> implementing a cli parser in Clojure myself.
>>
>> Sincerely
>> Meikel
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to